.bashrc에서 내보내기 사용

.bashrc에서 내보내기 사용

나는 .bashrc그 앞에 몇 줄이 있다는 것을 알았습니다.export

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

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

HISTSIZE=100000

export첫째, 이것이 맞는지, 둘째로 에서 사용되는 규칙은 무엇인지 알고 싶습니다 .bashrc.

답변1

export셸에서 시작한 다른 프로그램에서 "표시"되어야 하는 변수 만 필요하며 , 셸 자체 내에서만 사용되는 변수는 편집할 필요가 없습니다 export.

매뉴얼 페이지에는 다음과 같이 나와 있습니다.

제공된 이름은 이후에 실행되는 명령 환경으로 자동 내보내기 위해 표시됩니다. 이 옵션이 주어 지면 -f이름은 함수를 나타냅니다. 이름이 지정되지 않거나 -p 이 옵션이 제공되면 이 쉘에서 내보낸 모든 이름 목록이 인쇄됩니다. 이 -n옵션을 사용하면 내보낸 속성이 각 이름에서 제거됩니다. 변수 이름 뒤에 word 가 오면 =word변수 값은 word로 설정됩니다. 잘못된 옵션이 발견되거나 이름 중 하나가 유효한 쉘 변수 이름이 아니거나 -f제공된 이름이 함수가 아닌 경우 내보내기는 종료 상태 0을 반환합니다.

이는 다음을 통해 증명할 수 있습니다.

$ 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}이를 쉘 변수로 설정했습니다 MYVAR="value". echoecho는 쉘의 일부이므로 I를 사용하여 해당 값을 에코하십시오.
  • echo.sh그런 다음 동일한 기본 기능을 가진 작은 스크립트를 만듭니다. 단지 echo 이지만 차이점 ${MYVAR}은 별도의 스크립트이기 때문에 다른 프로세스에서 실행된다는 것입니다.
  • 새 프로세스가 상속되지 않으므로 호출 시 echo.sh아무것도 출력되지 않습니다.${MYVAR}
  • 그런 다음 키워드를 사용하여 ${MYVAR}내 환경으로 내보냅니다.export
  • 지금 동일한 작업을 다시 실행하면 환경에서 가져온 내용이므로 echo.sh내용이 에코됩니다.${MYVAR}

따라서 귀하의 질문에 대답하려면 다음을 수행하십시오.

변수를 내보내야 하는지 여부는 변수가 사용되는 위치에 따라 다릅니다.

답변2

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

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

export쉘 변수 에는 사용하지 마십시오 . 쉘 변수는 프로그래밍 언어로서의 쉘의 기능입니다. 쉘 변수는 이를 설정하는 쉘 내에서만 사용되며 쉘에 의해 시작된 프로그램에는 의미가 없습니다. 하위 쉘이 생성되면 나머지 쉘 상태와 마찬가지로 쉘 변수가 복사됩니다. 다음은 널리 사용되는 쉘에 적합한 쉘 변수의 몇 가지 예입니다.

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

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

예를 들어 대부분의 환경 변수는 전체 세션에 대해 의미가 있으며 유사한 파일에서 설정해야 합니다 PATH. ~/.profile특정 셸(예: )에만 의미가 있는 변수는 또는 와 PS1같은 셸 특정 파일에서 설정해야 합니다 . 바라보다~/.bashrc~/.zshrc모든 쉘이 읽을 수 있는 ".bashrc"에 해당하는 파일이 있습니까?

답변3

bash 내부 변수의 경우에는 그렇지 않습니다 export. 귀하의 예에서 HISTTIMEFORMATbash 자체는 이를 사용하므로 내보낼 필요가 없으며 MYSQL_HISTFILEmysql보내야 합니다. 그렇지 않으면 mysql볼 수 없습니다.

관련 정보