bash 프로 그래 밍 시리즈 - 환경 변수

4043 단어
bash 와 거의 모든 다른 셸 에서 사용 자 는 환경 변 수 를 정의 할 수 있 습 니 다. 이 환경 변 수 는 ASCII 문자열 로 저 장 됩 니 다.환경 변수의 가장 편리 한 점 은 유 닉 스 프로 세 스 모델 의 표준 부분 이다.이 는 환경 변 수 는 셸 스 크 립 트 뿐만 아니 라 컴 파일 된 표준 프로그램 에서 도 사용 할 수 있다 는 뜻 이다.bash 에서 환경 변 수 를 내 보 낼 때 나중에 실행 되 는 모든 프로그램 은 셸 스 크 립 트 든 아니 든 설정 을 읽 을 수 있 습 니 다.좋 은 예 는 vipw 명령 입 니 다. 루트 사용자 가 시스템 암호 파일 을 편집 할 수 있 도록 합 니 다.EDITOR 환경 변 수 를 좋아 하 는 텍스트 편집기 이름 으로 설정 하면 vipw 를 설정 하여 이 편집 기 를 사용 할 수 있 습 니 다. vi 를 사용 하지 않 고 xemacs 에 익숙해 져 서 vi 를 좋아 하지 않 는 다 면 편리 합 니 다.
bash 에서 환경 변 수 를 정의 하 는 표준 방법 은:
$ myvar='This is my environment variable!'

이 명령 은 "my var"라 는 환경 변 수 를 정의 하고 문자열 "This is my environment variable!"을 포함 합 니 다.이상 몇 가지 주의사항 이 있 습 니 다. 첫째, 등호 '=' 의 양쪽 에 빈 칸 이 없 으 면 어떠한 빈 칸 도 오 류 를 초래 할 수 있 습 니 다 (한번 시도 해 보 세 요).두 번 째 주의해 야 할 것 은 한 글 자 를 정의 할 때 따옴표 를 생략 할 수 있 지만 정 의 된 환경 변수 값 이 한 글자 보다 많 을 때 (빈 칸 이나 탭 키 포함) 따옴표 가 필요 하 다 는 것 이다.
셋째, 작은 따옴표 대신 작은 따옴표 로 사용 할 수 있 지만 상례 에서 이렇게 하면 오류 가 발생 할 수 있다.왜 일 까요?작은 따옴표 로 확장 이 라 고 불 리 는 bash 기능 을 사용 하지 않 기 때문에 특수 문자 와 문자 시 리 즈 는 값 으로 대 체 됩 니 다.예 를 들 어 "!"문 자 는 역사 확장 문자 입 니 다. bash 는 보통 앞에서 입력 한 명령 으로 바 꿉 니 다.(이 시 리 즈 는 bash 프로 그래 밍 에서 자주 사용 되 지 않 기 때문에 역사 확장 에 대한 자세 한 정 보 는 bash 도움말 페이지 의 '역사 확장' 절 을 참조 하 십시오.) 매크로 와 유사 한 기능 이 편리 하지만 지금 은 매크로 가 아 닌 환경 변수 뒤에 간단 한 느낌표 만 추가 하고 싶 습 니 다.
이제 환경 변 수 를 어떻게 실제 사용 하 는 지 살 펴 보 자.이것 은 하나의 예 가 있다.
$ echo $myvar
This is my environment variable!

환경 변수 앞 에 $를 추가 하면 bash 를 my var 의 값 으로 바 꿀 수 있 습 니 다.이것 은 bash 용어 에서 '변수 확장' 이 라 고 부른다.그러나 이렇게 하면 어떻게 될 까?
$ echo foo$myvarbar
foo

우 리 는 "fooThis is my environment variable! bar"를 표시 하고 싶 지만 그렇지 않 습 니 다.어디 가 틀 렸 어 요?쉽게 말 하면 bash 변수 확장 시설 은 곤 혹 스 러 웠 다.확장 할 변 수 를 식별 할 수 없습니다. $m, $my, $my var, $my varbar 등 입 니 다.어떻게 bash 가 어떤 변 수 를 인용 하 는 지 더욱 명확 하 게 설명 합 니까?이것 괜찮아요?
$ echo foo${myvar}bar
fooThis is my environment variable!bar

보시 다시 피 환경 변수 가 주변 텍스트 와 뚜렷하게 분리 되 지 않 았 을 때 괄호 로 묶 을 수 있 습 니 다.$my var 는 더 빨리 입력 할 수 있 고 대부분의 경우 올 바 르 게 작업 할 수 있 지만 ${my var} 은 거의 모든 상황 에서 문법 분석 을 정확하게 통과 할 수 있 습 니 다.그 밖 에 이들 은 똑 같이 본 시리즈 의 나머지 부분 에서 변수 가 확 장 된 두 가지 형식 을 볼 수 있 습 니 다.기억 하 십시오: 환경 변수 가 공백 (빈 칸 이나 탭 키) 으로 주변 텍스트 와 분리 되 지 않 았 을 때 더 명확 한 괄호 형식 을 사용 하 십시오.
돌 이 켜 보면 우 리 는 '내 보 내기' 변 수 를 언급 한 적 이 있다.환경 변 수 를 내 보 낼 때 나중에 실 행 될 모든 스 크 립 트 나 실행 가능 한 프로그램 환경 에서 자동 으로 사용 할 수 있 습 니 다.셸 스 크 립 트 는 셸 의 내 장 된 환경 변 수 를 사용 하여 '도착' 환경 변 수 를 지원 할 수 있 으 며, C 프로그램 은 getenv () 함수 로 호출 할 수 있 습 니 다.여기 에는 C 코드 예제 가 있 습 니 다. 입력 하고 컴 파일 합 니 다. 이것 은 우리 가 C 의 측면 에서 환경 변 수 를 이해 하 는 데 도움 을 줄 것 입 니 다.
myvar. c -- 샘플 환경 변수 C 프로그램
#include <stdio.h>
#include <stdlib.h>
int main(void) {
  char *myenvvar=getenv("EDITOR");
  printf("The editor environment variable is set to %s
",myenvvar); }

위의 코드 를 파일 my env. c 에 저장 한 다음 다음 명령 을 내 려 컴 파일 합 니 다.
$ gcc myenv.c -o myenv

현재 디 렉 터 리 에 실행 가능 한 프로그램 이 있 습 니 다. 실행 할 때 EDITOR 환경 변수의 값 을 인쇄 합 니 다 (값 이 있다 면).이것 은 내 기계 에서 운행 할 때의 상황 이다.
$ ./myenv
The editor environment variable is set to (null)

아... EDITOR 환경 변 수 를 값 으로 설정 하지 않 았 기 때문에 C 프로그램 은 빈 문자열 을 얻 었 습 니 다.특정 값 으로 설정 해 봅 시다.
$ EDITOR=xemacs
$ ./myenv
The editor environment variable is set to (null)

my env 인쇄 값 'xemacs' 를 원 하지만 환경 변 수 를 내 보 내지 않 았 기 때문에 잘 작 동 하지 않 습 니 다.이번 에는 그것 을 정확하게 일 하 게 한다.
 
  
 
$ export EDITOR
$ ./myenv
The editor environment variable is set to xemacs

현재 직접 보 셨 듯 이 환경 변 수 를 내 보 내지 않 으 면 다른 프로 세 스 (이 예 에서 예제 C 프로그램) 에 서 는 환경 변 수 를 볼 수 없습니다.참고 로 원한 다 면 한 줄 에서 환경 변 수 를 정의 하고 내 보 낼 수 있 습 니 다. 다음 과 같 습 니 다.
$ export EDITOR=xemacs

이것 은 두 줄 버 전과 효과 가 같다.환경 변 수 를 제거 하기 위해 unset 를 사용 하 는 방법 을 보 여 줍 니 다.
$ unset EDITOR
$ ./myenv
The editor environment variable is set to (null)

좋은 웹페이지 즐겨찾기