~によると文書
.zshenv
-fオプションが設定されていない場合は、シェルへのすべての呼び出しからこの情報を取得します。これには、コマンド検索パスを設定するコマンドとその他の重要な環境変数を含める必要があります。.zshenv
出力を生成したり、シェルがttyに接続されていると仮定するコマンドを含めないでください。
いいね、いいですね。 sshを介してログインすることはzshを呼び出すと見なされます。しかし、そうではないかもしれませんか?
wayne@arglefraster ~
⚘ echo $PATH 10:01:17
/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
wayne@arglefraster ~
⚘ zsh 10:01:20
e%
wayne@arglefraster ~
⚘ echo $PATH 10:01:24
/usr/local/heroku/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/wayne/.rvm/bin:/home/wayne/.bin:/home/wayne/.local/bin
これらの追加パスビットが私のファイルに追加されます.zshenv
。
これは正常ですか、それとも私に奇妙なことが起こっていますか? PATH編集を他の場所に移動する必要がありますか?
答え1
zshenv
実際にはシェルのすべてのインスタンスから読み取られますが、最初、最初。 (または、…)$PATH
でリセットできます。zprofile
~/.zprofile
/etc/zprofile
zshenv
settingsではなく$PATH
、zprofile
ログイン時に環境を設定する役割をします。環境変数を設定するとは、セッション内でzshenv
単純なzsh
サブシェルまたはスクリプトを実行するzsh
と、その変数が削除されることを意味します。
答え2
ログインシェルであるZシェルにいることを確認してください。
.zshenv
コンピュータにSSH接続するときに実行する必要があります。実行されない場合
- 次のコマンドを使用して、システムにSSH接続するときにZシェルにあることを確認してください。
echo $SHELL
- Zシェルにない場合は、
zsh
それを実行してZシェルを明示的に起動し、.zshenv
操作を確認します。その場合は、実行してexit
Zシェルを終了します。 - ファイルが有効な場合は、ログインシェルを変更してください。
- SSH経由でログインするとき
- これを実行すると、
command -v zsh
Zシェルがどこにあるかがわかります。何も返されない場合は、Zシェルをインストールする必要があります。 - 次に、実行して
chsh
Zシェルへのパスを指定します。 - ログアウトしてsshを使用してもう一度ログインしてください。