に保存されるいくつかのスクリプトを作成しています$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"