다양한 환경 변수를 사용하는 Bash 셸

다양한 환경 변수를 사용하는 Bash 셸

어떻게든 다른 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.shnew에서 스크립트를 가져올 수도 있습니다 .

#!/bin/bash

source path/to/bfin.sh

# the rest of the script goes here

관련 정보