(MacOS에서) 실행 zsh
중이고 방금 배웠습니다.$fpath
. 평소와 같이 그것이 내 환경에 참여하고 있는지 확인하기 위해 입력했지만 env
놀랍게도 거기에 없었습니다! 그러나 $FPATH
( 및 $fpath
)는 다음과 같이 정의됩니다.
% echo $fpath
/usr/local/share/zsh/site-functions /usr/share/zsh/site-functions /usr/share/zsh/5.9/functions
% echo $FPATH
/usr/local/share/zsh/site-functions:/usr/share/zsh/site-functions:/usr/share/zsh/5.9/functions
출력된 변수는 다음과 같습니다 env
.
% env | sort | cut -d '=' -f 1
HOME
HOMEBREW_CELLAR
HOMEBREW_PREFIX
HOMEBREW_REPOSITORY
INFOPATH
LANG
LC_CTYPE
LOGNAME
MANPATH
OLDPWD
PATH
PWD
SHELL
SHLVL
SSH_AUTH_SOCK
TERM
TERM_PROGRAM
TERM_PROGRAM_VERSION
TERM_SESSION_ID
TMPDIR
USER
XPC_FLAGS
XPC_SERVICE_NAME
_
__CFBundleIdentifier
나는 항상 env
Bash에서 환경 변수를 제어하는 데 의존해 왔지만 분명히 그것이 최선의 선택은 아닙니다(적어도 더 이상은 아닙니다).
다른 명령을 사용해야 합니까? 또는 목록을 작성하는 방법모두현재 사용자/세션이 환경 변수에 액세스할 수 있나요?
답변1
사용된 변수쉘을 통해, 여기에서 다루는 것처럼 or PROMPT
, 또는 HISTFILE
, 또는 은 IFS
환경 변수일 필요가 없습니다. 즉, 를 사용하여 환경으로 내보낼 필요가 없습니다 export
.
내보낸 변수는 쉘에서 실행되는 외부 유틸리티(예: 유틸리티)에 표시되지만 env
내보내지 않은 변수는 이러한 유틸리티에 표시되지 않습니다.
셸에서 사용하는 변수는 해당 값이 이미 셸에서 액세스 가능하므로 환경으로 내보낼 필요가 없습니다. 또한 외부 유틸리티가 해당 값에 액세스할 수 있도록 해당 값을 내보낼 필요가 없습니다. 이는 이러한 프로세스의 환경을 오염시키고 드문 경우에 간섭을 일으킬 수 있기 때문입니다.
모두 보고 싶다면쉘 변수set
, 매개변수 없이 내장 유틸리티를 사용할 수 있습니다.