소스 명령이 쉘 스크립트에서 작동하지 않습니다

소스 명령이 쉘 스크립트에서 작동하지 않습니다

저는 스크립팅 언어를 처음 접했습니다.

source ~/.custom_rc쉘 스크립트에서 명령을 실행 해야 합니다 . 쉘 스크립트를 실행하면 오류가 표시되지 않습니다. 그것은 아주 잘 작동합니다.

이것은 내 install.sh파일입니다.

#!/usr/bin/env bash
#
# Some Comments
#
# End of Comments

echo ""
.
.
.
.
.
.
source ~/.custom_rc

echo "End Of Script..."

컬을 사용하여 스크립트를 실행하고 있습니다 sh -c.

sh -c "$(curl -fsSL https://some.link/to/install.sh)"

스크립트 내에서 명령이 실행되지 않는 이유는 무엇입니까? 쉘 스크립트 내에서 어떻게 실행되도록 합니까?

편집 #1:

파일에서 alias 명령을 사용합니다 .custom_rc.

실행 후에는 alias 명령을 사용할 수 없습니다.

그러나 수동으로 실행하면 source ~/.custom_rcalias 명령이 제대로 작동합니다.

답변1

알았어...무슨 일인지 이해합니다. 다음에 정의된 별칭을 사용하려면.custom_rc 뒤쪽에 shsh실행되면 별칭이 세션 내에 설정 되므로 작동하지 않습니다 . sh완료되면 그들은 죽을 것입니다. 즉, 실행 시 별칭을 사용할 수 있어야 source합니다 install.sh.

이 문제를 처리하는 다른 스크립트에 대한 도움이 필요합니다.

래퍼.sh:

curl https://some.link/to/install.sh # download the script so you can source it
. install.sh # source it

(혹은 비슷한 것)

그러면 실행할 수 . wrapper.sh있고 작동할 것입니다(어떻게 얻었는지 참고하세요).

고쳐 쓰다

작동하지 않는다는 의견:

$ cat script1.sh 
alias alias1="echo hola"

. script2.sh

$ cat script2.sh 
alias alias2="echo adios"

$ ./script1.sh 
$ alias1
bash: alias1: command not found
$ alias2
bash: alias2: command not found
$ . script1.sh 
$ alias1
hola
$ alias2
adios

관련 정보