SHELL 환경 변수를 설정할 때 놀라운 점이 있습니까?

SHELL 환경 변수를 설정할 때 놀라운 점이 있습니까?

저는 macOS를 사용하고 있는데 Bash 3.2가 함께 제공되므로 homebrew를 통해 4.4로 업그레이드했습니다. 시작 명령을 다음과 같이 설정하여 최신 버전을 사용하도록 터미널을 구성했습니다.

/usr/local/bin/bash -l

script최근에 터미널 세션을 녹음하고 재생하는 명령을 가지고 놀다 가 Bash 3.2를 사용하는 것을 발견했습니다.

설정을 하면 export SHELL=/usr/local/bin/bash문제가 해결되는데 설정을 권장하는지 궁금합니다. 내 생각엔 이건 바람직하지 않을 수도 있어아니요SHELL설정하려면 환경 변수를 기반으로 무엇을 결정해야 할지 잘 모르겠습니다 .

답변1

환경 변수의 일반적인 의미 SHELL는 사용자가 선호하는 대화형 셸입니다. 특정 구문( Bourne과 같을 필요는 없음)이 있어야 하고 특정 명령줄 구문(예 을 지원해야-c: . 주로 터미널 에뮬레이터에서 기본적으로 실행되는 프로그램으로 사용됩니다.SHELLSHELL

텍스트 모드(텍스트 콘솔 또는 SSH를 통해)로 로그인하면 다음과 같은 결과를 얻게 됩니다.로그인 쉘사용자 데이터베이스에 나열됩니다(예 /etc/passwd: ). GUI 환경에서 터미널을 열 때 SHELL환경변수가 설정되어 있으면 환경변수에 지정된 쉘이 나옵니다. 텍스트 모드 로그인에 동일한 쉘을 사용하려면 chsh로그인 쉘을 사용하거나 변경하십시오.로그인 쉘을 즐겨 사용하는 쉘로 전환하세요.exec.

$SHELL -csh -c때로는 코드를 실행하는 대신 sh 구문을 사용하는 프로그램을 만날 수도 있습니다 . 그러나 이런 상황은 매우 드뭅니다. 기술적으로 이것은 POSIX에서 허용되지만 역사적 사용법을 위반합니다. 실제로 설정은 SHELL안전합니다. 나는 로그인 쉘을 설정해왔고 약 20년 동안 /bin/sh대부분의 컴퓨터에 SHELL설정해 왔습니다 ./path/to/zsh

관련 정보