나는 어떤 텍스트를 읽고 있었는데 다음과 같이 적혀 있습니다.
.bashrc 셸 구성 파일은 셸 스크립트를 실행할 때와 같이 BASH 셸을 생성할 때마다 실제로 실행됩니다. 즉, 서브쉘이 생성될 때마다 .bashrc 파일이 실행됩니다. 이는 .bashrc 셸 초기화 파일에 정의한 지역 변수나 별칭을 내보내는 효과가 있습니다.
나는 또한 쉘 스크립트를 실행할 때마다(예를 들어script1.sh), 서브쉘이 생성됩니다. 따라서 이 서브쉘이 생성되면,.bashrc파일이 실행되어야 하며 그에 따라 별칭이 정의됩니다..bashrc서브셸에서 사용할 수 있어야 합니다(그렇지 않음). 그리고 이 하위 쉘에서 별칭을 사용할 수 없는 경우 기본 쉘(스크립트를 실행하는 데 사용)에서 어떻게 사용할 수 있습니까?
답변1
맞아요, 리눅스의 bash 쉘에서는 이렇게 말할 수 있어요
source /path/to/my_lib.sh
파일에서 별칭 정의를 로드합니다. 또는 복잡성을 낮추기 위해 bash 스크립트에 해당 별칭 정의를 복사하면 됩니다.
하지만 기다려! 이것은 아마도 다음과 같은 별칭만 생성할 것입니다.
alias foo3 foo9 # describe these two aliases: declare errors if one doesn't exist
새로운 별칭 정의가 마음에 들겠지만 다음을 사용하여 별칭 확장을 활성화하기 전에는 실행이 실패할 것입니다.
shopt -s expand_aliases # alias xpn ON
다음 사항도 고려하세요.
shopt -u expand_aliases # alias xpn OFF
또는
shopt expand_aliases # query whether
또는
unalias foo3 foo9 # delete these aliases
답변2
별칭을 정의했고 script1.sh
이를 어디에서나 사용할 수 있도록 하려면 .bashrc
파일에 다음을 추가하세요.
source /path/to/script1.sh
또는 대안적으로:
. /path/to/script1.sh
스크립트가 존재하지 않는 경우 오류를 방지하려면 다음을 사용할 수 있습니다.
if [ -f /path/to/script1.sh ]; then source /path/to/script1.sh; fi
에서 정의한 모든 함수에 대해서도 동일하게 작동합니다 script1.sh
.