쉘 애플리케이션을 로드하는 방법은 무엇입니까?

쉘 애플리케이션을 로드하는 방법은 무엇입니까?

처음에는 별칭으로 셸 애플리케이션을 만들었지만 감당할 수 없게 되었습니다.

'app'은 yt-dlp(비디오 다운로더)를 호출하고 다운로드한 콘텐츠를 안정적인 디렉터리 구조로 구성하는 셸 기능을 제공합니다.

현재 Termux(Android 터미널 에뮬레이터)에서 한 줄을 사용하여 애플리케이션을 로드하고 있습니다 bash.bashrc..bashrc

라인 중 하나가 bash.bashrc셸 애플리케이션을 로드합니다.

. /path/to/main

main나머지를 로드하면 내용은 다음과 같습니다.

. "$bin_dir/vars"
. "$bin_dir/common"
. "$bin_dir/logger"
. "$bin_dir/history"
. "$bin_dir/files"
. "$bin_dir/dlv"
. "$bin_dir/fvid"

이는 사용자가 사용할 수 있도록 함수와 변수를 터미널에 노출하는 bash 스크립트입니다. 로딩 순서는 중요하며 예를 들어 내용 dlv에 따라 다릅니다 .common

이제 프로젝트를 오픈 소스로 만들고 쉽게 설치할 수 있도록 만들고 싶습니다. NET에서 실행하지 않고 쉘 애플리케이션을 로드할 수 있는지 궁금합니다 bash.bashrc.

스크립트를 넣을까도 생각했지만 $PREFIX/bin/누군가 호출하면 dlv다른 모든 종속성은 아직 로드되지 않습니다.

모든 것을 하나의 파일에 넣을 수도 있지만, 내 의도는 코드를 깨끗하게 유지하기 위해 이러한 모듈을 만드는 것입니다.

더 우아한 해결책이 없다면 install.sh... echo ". /path/to/main" >> ~/bash.bashrc아이디어를 작성할 수도 있을 것 같아요.

편집: main (loader) 을 넣었 $PREFIX/bin지만 명령을 실행할 때 내 셸에서 사용할 수 있는 함수와 변수가 없습니다. 나는 그것을 기대하지 않았다.

답변1

내가 생각해낸 해결책은 main실행하고 실행할 수 있어야 하는 필요성을 없애는 것이었습니다 source main.

main포함된 명령을 실행하는 것만으로는 작동하지 않는 이유가 확실하지 않지만 source이 해결 방법은 그다지 나쁘지 않습니다.

을 입력하면 main운영 $PREFIX/bin체제를 main찾을 수 있습니다 $PATH. 기본적으로 이는 $PREFIX/binTermux와 마찬가지로 모든 Termux 설치에 적용됩니다.$PATH

관련 정보