내 Ubuntu 컴퓨터에 특정 응용 프로그램이 설치되어 있고 이를 bash 스크립트에서 사용 /usr/local/MYPROGRAM/bin/myapp
하려고 하면 명령을 찾을 수 없다는 오류가 발생 하지만 일반 터미널 창에서 호출하면 정상적으로 작동합니다. 파일이 있는데 bash 스크립트에서 호출하는 방법을 알고 싶습니다 .myfn
mybashscript.sh
myfn
myfn
~/.bashrc
myfn
mybashscript.sh
이것은 mybashscript.sh
:
#!/bin/bash -i
alias brc='source ~/.bashrc'
source /usr/local/MYPROGRAM/bin/myapp
#exec bash
echo "******************pathhhhhhhh************"
echo $PATH
echo "******************pathhhhhhhh************"
/usr/local/MYPROGRAM/bin/myapp
내가 실행할 때의 출력은 다음과 같습니다 ./mybashscript.sh
.
bash: /bin/realbin/myapp: No such file or directory
******************pathhhhhhhh************
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
******************pathhhhhhhh************
/usr/local/MYPROGRAM/bin/myapp: 3: /usr/local/MYPROGRAM/bin/myapp: /bin/realbin/myapp: not found
답변1
source
스크립트에 함수를 로드하는 경우 :
source /usr/local/MYPROGRAM/bin/myapp
모든 하위 쉘(예: 스크립트)에서 함수를 전역적으로 사용할 수 있게 하려면 를 사용하십시오 export
. 귀하의 경우 이 명령은 의 함수 정의를 따릅니다 ~/.bashrc
.
export -f myfn
편집: 여기에 보고된 문제가 발생했습니다.
bash: /bin/realbin/myapp: No such file or directory
파일이 /bin/realbin/myapp
존재하지 않기 때문입니다.
답변2
source
해당 함수가 포함된 파일을 사용해 보셨나요 ?
즉내 파일에 bash 기능을 추가하는 경우 .bashrc
(그 위치가 마음에 듭니다), 이 경우 전역적으로 사용할 수 있도록 source
파일을 포함 해야 합니다..bashrc
알아채다: source
시작 시 실행되기 때문에 필요합니다.수동함수를 편집할 때만 호출됩니다.고쳐 쓰다소스 코드).