어떻게든 다른 bash 쉘에 들어가서 일부 환경 변수를 변경하고 싶습니다.
예를 들어, 스크립트를 실행했는데 bfin.sh
다음과 같은 내용이 포함되어 있다면
export PATH=/home/me/bfin2012:$PATH
이 변경된 변수를 사용하여 bash 쉘을 생성하고 싶습니다. 어떻게 해야 하나요?
답변1
파일에 있는 환경 변수를 로드하려면 이 source
명령을 사용할 수 있습니다. 예를 들어
현재 경로 보기:
> echo $PATH
/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
사용자 정의 환경 설정이 포함된 파일..
> cat exports
export PATH="/home/me/bfin2012:$PATH"
export ...
사용자 정의 환경 로드
> source exports
변경사항을 확인하세요.
> env | grep '^PATH'
PATH=/home/me/bin2012:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin
답변2
변수를 설정하고 설정된 변수를 내보냈습니다. 들어가고 싶다면새로운이 시점에서 변수가 존재하는 bash 쉘에서 간단히 다음을 실행할 수 있습니다.
bash
새 셸의 시작 프로세스로 인해 변수가 덮어쓰여질 수 있다는 점에 유의하세요! .bashrc
예를 들어 이런 일이 발생할 수 있습니다.
답변3
로 끝나도록 스크립트를 변경 exec bash
하거나 실행하십시오.
sh -c '. bfin.sh; exec bash'
현재 쉘의 환경을 변경하려면 다음을 실행하십시오.
. bfin.sh
이것.
(점 또는 마침표)내장은 함수처럼 동일한 쉘 환경에서 지정된 스크립트의 명령을 실행합니다.
답변4
이 bfin.sh
스크립트를 실행해도 아무런 효과가 없습니다. 환경 변수의 값을 변경 PATH
한 후 종료됩니다. 변경된 변수는 스크립트 환경의 일부이므로 스크립트가 끝나면 손실됩니다.
쉘은 bash
스크립트를 실행하기 전에 변수가 언급한 파일을 자동으로 가져옵니다 BASH_ENV
. 따라서 스크립트에 myscript
인터프리터를 참조하는 #!
-line이 있다고 가정하면 bash
다음은 bfin.sh
스크립트를 가져온 다음 수정된 환경을 사용하여 스크립트를 실행합니다.
BASH_ENV=path/to/bfin.sh ./myscript
bfin.sh
new에서 스크립트를 가져올 수도 있습니다 .
#!/bin/bash
source path/to/bfin.sh
# the rest of the script goes here