.bashrc에서 내보내기 사용


45

나는 내 .bashrc에서 일부 라인이 export그들 앞에 있다는 것을 알아 차렸다.

export HISTTIMEFORMAT="%b-%d  %H:%M  "
...
export MYSQL_HISTFILE="/root/.mysql_history"

반면에 다른 사람들은 그렇지 않습니다.

HISTSIZE=100000

나는 규칙이 사용하는 무엇 둘째, 첫째,이 정확한지 궁금하고, 오전 export.bashrc.

답변:


53

export쉘에서 시작하는 다른 프로그램이 "보아야 할"변수 만 필요 하지만, 쉘 자체에서만 사용되는 변수는 exported 할 필요가 없습니다 .

다음은 매뉴얼 페이지의 내용입니다.

The  supplied  names are marked for automatic export to the environ‐
ment of subsequently executed commands.  If the -f option is  given,
the  names  refer to functions.  If no names are given, or if the -p
option is supplied, a list of all names that are  exported  in  this
shell  is  printed.   The -n option causes the export property to be
removed from each name.  If a variable name is  followed  by  =word,
the  value  of  the variable is set to word.  export returns an exit
status of 0 unless an invalid option  is  encountered,  one  of  the
names  is  not a valid shell variable name, or -f is supplied with a
name that is not a function.

이것은 다음을 통해 입증 될 수 있습니다.

$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh

$ export MYVAR="value-exported"
$ ./echo.sh
value-exported

설명:

  • 먼저 ${MYVAR}와 함께 Shell 변수로 설정 했습니다 MYVAR="value". echoecho는 쉘의 일부이므로 I를 사용 하면 값을 에코 할 수 있습니다.
  • 그런 다음을 만듭니다 echo.sh. 그것은 기본적으로 똑같이하는 작은 스크립트 ${MYVAR}이지만 그냥 에코 하지만 차이점은 별도의 스크립트이기 때문에 다른 프로세스에서 실행된다는 것입니다.
  • echo.sh새로운 프로세스가 상속하지 않기 때문에 호출 하면 아무것도 출력하지 않습니다.${MYVAR}
  • 그런 다음 키워드를 ${MYVAR}사용하여 내 환경으로 내 보냅니다.export
  • 이제 echo.sh다시 동일 하게 실행 ${MYVAR}하면 환경에서 가져 오기 때문에 내용을 에코 합니다.

따라서 귀하의 질문에 대답하십시오 :

내 보내야하는지 여부에 관계없이 변수가 사용될 위치에 따라 다릅니다.


17

사용 export을위한 환경 변수 . 환경 변수는 운영 체제 기능입니다. 환경 변수는 자식 프로세스에 의해 상속됩니다. 셸에서 설정하면이 셸에서 시작한 모든 프로그램에서 변수를 사용할 수 있습니다. 많은 응용 프로그램이나 쉘 이외의 특정 응용 프로그램에서 사용하는 변수는 환경 변수입니다. 다음은 일반적인 환경 변수의 몇 가지 예입니다.

  • HOME— 사용자 별 구성 파일이있는 사용자의 홈 디렉토리를 나타냅니다. 사용자 별 구성 파일을 읽거나 사용자의 홈 디렉토리 위치를 알아야하는 프로그램에서 사용합니다.
  • PATH— 다른 프로그램을 시작하기 위해 실행 파일을 찾을 위치를 나타냅니다. 다른 프로그램을 시작해야하는 모든 프로그램에서 사용합니다.
  • LD_LIBRARY_PATH— 동적 라이브러리 파일을 찾을 위치를 나타냅니다. 동적으로 연결된 모든 실행 파일에서 사용됩니다.
  • EDITOR, VISUAL— 편집기가 필요할 때 실행할 프로그램을 나타냅니다. 텍스트 편집기를 시작해야하는 모든 프로그램에서 사용합니다.
  • DISPLAY, XAUTHORITY— X11 서버에 연결하는 방법을 나타냅니다. X11 클라이언트 (예 : GUI 프로그램)에서 사용합니다.
  • LESS— 옵션 less이 실행될 때 자동으로 켜집니다 . 에 의해 사용됩니다 less.
  • http_proxy— 사용할 웹 프록시를 나타냅니다. 대부분의 웹 브라우저에서 사용됩니다.

export쉘 변수 에는 사용하지 마십시오 . 쉘 변수는 프로그래밍 언어 인 쉘의 기능입니다. 쉘 변수는 설정된 쉘 내부에서만 사용됩니다. 쉘에 의해 시작된 프로그램에는 아무런 의미가 없습니다. 쉘 변수는 다른 쉘 상태와 같이 서브 쉘이 작성 될 때 복제됩니다. 다음은 널리 사용되는 쉘에 의미가있는 쉘 변수의 몇 가지 예입니다.

  • PS1 — 각 명령 전에 표시 할 프롬프트.
  • IFS — 따옴표없는 변수 확장 및 명령 대체에서 단어를 구분하는 문자입니다.
  • HISTFILE — 셸이 명령 기록을 쓰는 파일입니다.

쉘에서 사용하는 변수 외에도 대부분의 쉘 스크립트는 내부 목적으로 변수를 사용합니다.

대부분의 환경 변수 (예 PATH:)는 전체 세션에 적합하며 ~/.profile유사한 파일에 설정해야 합니다. 단지 특정 쉘 (예를 들면 이해가 변수 PS1)와 같은 쉘 특정 파일에 설정해야 ~/.bashrc하거나 ~/.zshrc. 모든 쉘에서 읽은 ".bashrc"파일이 있습니까?를 참조하십시오 .


3

bash 내부 변수의 경우 필요하지 않습니다 export. 귀하의 예제에서 HISTTIMEFORMATbash 자체가 사용되며 내보내기 MYSQL_HISTFILE가 필요하지 않으며 내보내기 가 mysql필요 mysql하지 않으면 그렇지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.