Shell 의 환경 변수 - export, source 와 점 명령 의 차이
4484 단어 Linux
모든 Shell 프로 세 스 는 자신의 역할 영역 이 있 습 니 다.현재 프로 세 스에 서 직접 정 의 된 변 수 는 국부 변수 (Local Variables) 라 고 할 수 있 으 며, 국부 변 수 는 다른 셸 프로 세 스에 접근 할 수 없습니다.일상적인 개발 에 서 는 셸 스 크 립 트 가 서로 호출 되 는 경우 가 있 습 니 다.셸 에서 다른 셸 스 크 립 트 를 실행 할 때 이 셸 은 새 프로 세 스 를 fork 하여 다른 명령 해석 기 를 시작 하여 이 스 크 립 트 를 실행 합 니 다.새 프로 세 스 는 하위 셸 이 라 고 할 수 있 습 니 다. 이전 셸 은 부모 셸 이 었 습 니 다.하위 셸 도 부모 셸 의 부분 변 수 를 가 져 올 수 없습니다.
#!/bin/bash
name="father"
sh ./son.sh
#!/bin/bash
echo "my father's name is ${name}"
# output: my father's name is
이 럴 때 는 환경 변수 (Environment Variables) 라 는 개념 을 도입 해 야 한다.환경 변 수 는 셸 프로 세 스 의 모든 하위 프로 세 스 에 사용 할 수 있 습 니 다.
export 명령
export 는 bash 셸 에 내 장 된 명령 입 니 다.export 명령 을 사용 하여 환경 변 수 를 새로 만 든 하위 셸 로 내 보 냅 니 다.하위 셸 은 변수의 복사 본 을 가 져 옵 니 다. 하위 셸 에서 환경 변 수 를 수정 하면 부모 셸 에서 이 환경 변수의 값 에 영향 을 주지 않 고 다른 하위 셸 에 도 영향 을 주지 않 습 니 다.일반적으로 환경 변 수 는 대문자 이다.예 를 들 어 보 겠 습 니 다.
#!/bin/bash
NAME="father"
export NAME
sh ./son.sh
echo "my name is ${NAME}"
# output: my name is father
#!/bin/bash
echo "my father's name is ${NAME}"
# output: my father's name is father
NAME="son"
export 명령 을 통 해 내 보 내 는 환경 변 수 는 한계 가 있 습 니 다.
소스 명령
source 명령 도 bash 셸 에 내 장 된 명령 으로 현재 셸 스 크 립 트 나 명령 줄 에 모든 기능 파일 을 불 러 올 수 있 습 니 다.주어진 파일 에서 명령 을 읽 고 실행 한 다음 되 돌려 줍 니 다.source 명령 도 점 명령 이 라 고 불 리 며 집행
source fiilename
과 . filename
의 효 과 는 같다.그러나 일반적으로 source 를 사용 하 는 것 을 권장 합 니 다. 점 은 경로 에서 사용 하 는 점 과 헷 갈 릴 수 있 기 때문에 실 수 를 하기 쉽 습 니 다.예 를 들 어 보 겠 습 니 다.#!/bin/bash
NAME="father"
source ./son.sh
echo "[father] my name is ${NAME}"
# output: [father] my name is son
echo "my son's name is ${SON_NAME}"
# output: my son's name is son
#!/bin/bash
echo "my father's name is ${NAME}"
# output: my father's name is father
NAME="son"
SON_NAME="son"
만약 에 우리 가 sh 가 아 닌 source 를 사용 하여 파일 을 실행 할 때 export 를 사용 하지 않 아 도 부모 셸 은 하위 셸 의 환경 변 수 를 얻 을 수 있 고 하위 셸 도 부모 셸 의 환경 변 수 를 수정 할 수 있 습 니 다.
총결산
export 와 source 의 차이
export 와 source 는 완전히 다른 두 명령 입 니 다. export 는 환경 변 수 를 내 보 내 고 source 는 파일 을 실행 하 는 데 사 용 됩 니 다.
souce filename 과 sh filename 실행 파일 의 차이
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.