에 저장되는 일부 스크립트 를 만들고 있습니다 $HOME/.local/bin
. 터미널을 통해 실행하면 모든 것이 정상입니다. 그러나 이렇게 하면 실패합니다.PATH
$HOME/.zshrc
tmux run-shell <script>
이렇게 하면 echo $SHELL
둘 tmux run-shell "echo $SHELL"
다 반환됩니다 /bin/zsh
. 이렇게 하면 상황 echo $PATH
이 tmux run-shell 'echo $PATH'
달라집니다. 후자가 전자보다 훨씬 짧습니다.
PATH
tmux가 경로 run-shell
를 찾을 수 있도록 경로를 어떻게 추가합니까 ? "전역 환경"만 로드한다는 내용을 어디선가 읽었는데, 지금까지는 그런 환경에 더 이상 아무것도 추가할 수 없었습니다. 나는 .zshenv
, .zprofile
을 zlogin
가지 려고 노력합니다 .zshrc
.
타당하다면 MacOs Ventura를 실행하고 있지만 Linux에서도 이 설정을 복제하겠습니다.
어떤 종류의 도움이라도 환영합니다!
답변1
tmux가 내부적으로 사용하는 쉘은 run-shell
tmux 서버에서 환경 변수를 가져옵니다. tmux 서버를 시작하는 방법과 이후에 발생하는 상황에 따라 결과 환경은 tmux 내부 또는 tmux 외부의 대화형 Zsh에서 보는 것과 일치할 수도 있고 일치하지 않을 수도 있습니다.
클라이언트가 연결될 때 서버 환경이 자동으로 업데이트되지 않습니다. 보다tmux에서 여러 세션을 생성하는 방법은 무엇입니까?tmux는 병합을 통해 하위 프로세스에 대한 환경을 생성합니다.글로벌 환경 및 세션 환경. 이 답변에서는 전역 환경에서 권한을 설정 하고 어떤 세션 환경에서도 권한을 설정 PATH
하지 않는다고 가정합니다.PATH
내 생각에 Zsh에서 tmux 서버를 시작하면 PATH
tmux 서버는 예 PATH
를 들어 .set-environment -g PATH /wrong/path:…
.tmux.conf
다른 곳(예: cron 또는 서비스)에서 tmux 서버를 시작하는 경우 PATH
이것이 원하는 것인지 확인하세요.
set-environment -g PATH /right/path:…
또는 귀하의 것에서 사용 .tmux.conf
하면 각각의 새로운 tmux 서버는 부모로부터 상속받은 내용에 관계없이 변수 자체를 설정합니다.
이미 실행 중인 서버의 경우 PATH
올바른 서버를 알고 있는 셸에서 다음 명령을 호출하여 전역 환경에서 업데이트 할 수 있습니다 PATH
.
tmux set-environment -g PATH "$PATH"