tmux run-shellパスの変更

tmux run-shellパスの変更

に保存されるいくつかのスクリプトを作成しています$HOME/.local/bin。端末経由で実行すると、すべてが正常です。しかし、これは失敗します。PATH$HOME/.zshrctmux run-shell <script>

これによりecho $SHELL両方tmux run-shell "echo $SHELL"が返されます/bin/zsh。これにより状況echo $PATHtmux run-shell 'echo $PATH'変わります。後者は前者よりはるかに短い。

PATHtmuxがパスrun-shellを見つけるためにどのようにパスを追加しますか? 「グローバル環境」のみロードするという内容をどこかで読んでいましたが、これまではそんな環境にこれ以上何も追加できませんでした。私は.zshenv、行こ.zprofilezloginとします.zshrc

正しい場合はMacOs Venturaを実行していますが、Linuxでもこの設定を複製します。

どんな助けでも大歓迎です!

答え1

tmux が内部的に使用するシェルは、run-shelltmux サーバーから環境変数を取得します。 tmuxサーバーを起動する方法とその後に発生する状況によっては、結果の環境は、tmuxの内部またはtmuxの外部の対話型Zshで表示されるものと一致する場合と一致しない場合があります。

クライアント接続時にサーバー環境は自動的に更新されません。よりtmuxで複数のセッションを作成する方法は?tmux は、マージによって子プロセスの環境を作成します。グローバル環境とセッション環境。この回答では、グローバル環境で権限を設定し、どのセッション環境でも権限を設定しないとPATH仮定します。PATH

私の考えでは、Zshでtmuxサーバーを起動すると、PATHtmuxサーバーは、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"

関連情報