답변:
Mac을 사용 /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
중이고 tmux를 실행할 때 왜 PATH 앞에 계속 추가 되는지 궁금 하다면, /etc/profile
파일 에서 실행되는 path_helper 유틸리티 때문입니다 .
tmux를 소스로하지 말라고 쉽게 설득 할 수는 없지만 ( /etc/profile
어떤 이유로 tmux는 항상 로그인 쉘로 실행되므로 / etc / profile을 읽습니다) path_helper의 효과가 don 당신의 경로를 망쳐 놓지 마십시오.
요령은 path_helper가 실행되기 전에 PATH가 비어 있는지 확인하는 것입니다. 내 ~/.bash_profile
파일에는 다음이 있습니다.
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
path_helper가 실행되기 전에 PATH를 지우면 기본 PATH가 (이전) 선택한 PATH 앞에 추가되는 것을 막을 수 있으며 나머지 개인 bash 설정 스크립트 (추가 명령 .bash_profile
또는 .bashrc
소스에서 제공 한 경우 .bash_profile
)를 통해 그에 따라 PATH.
이해가 되길 바랍니다 ...
-f
와 함께 -e
,하지만 로그인 할 때 내가 거기이었다 확인 원하지 않는 한, 나는 개인적으로 실행됩니다 스크립트에서 파일을 시도하고 소스하지 않을 것입니다. 그래도 많은 다른 컴퓨터 (및 운영 체제)에서 bash 스크립트를 재사용하는 경향이 있으므로 방탄인지 확인하고 싶습니다. 다른 유닉스 변형이 그것을 다른 것으로 부를 수 있다고 상상할 수 있습니다.
~/.bash_profile
만들었고 , 그 작은 스 니펫을 맨 위에 놓아서 행복한 TMux 세상으로 돌아 왔습니다.
set -g default-command "${SHELL}"
에 .tmux.conf
힘 비 로그인 쉘을 사용하는 TMUX. 이미 로그인 한 후 일반적으로 tmux를 열기 때문에 어쨌든 그 점을 알 수 없습니다.
아니; $PATH
많은 시스템이 사용자가 설정 한 순서에 의존하기 때문에 정렬 은 너무 미친 짓입니다.
그러나 tmux 는 "로그인"모드로 쉘을 시작하여 다시~/.profile
소스를 제공 합니다 . 즉 PATH=/my/dir:/another/dir:$PATH
, 해당 파일 과 같은 것이 있으면 다시 수행 되어 $ PATH에을 포함 /my/dir:/another/dir:/my/dir:/another/dir:(etc.)
합니다. 이를 피하기 위해 다른 변수를 사용하여 확인할 수 있습니다.
if [ "$_SKIP_PROFILE" ]; then
return 0
else
export _SKIP_PROFILE=y
fi
export PATH="/my/dir:/another/dir:$PATH"
if [ -n "$TMUX" ]
절 뒤에 숨겨져 있지만 궁금해했다[ -f /etc/profile ]
./etc/profile
항상 일반 파일 이라고 가정하는 것이 안전하지 않습니까?