처음에는 별칭으로 셸 애플리케이션을 만들었지만 감당할 수 없게 되었습니다.
'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/bin
Termux와 마찬가지로 모든 Termux 설치에 적용됩니다.$PATH