PATH は手動で取得しない限り ~/.profile からエクスポートされません。

PATH は手動で取得しない限り ~/.profile からエクスポートされません。

~/.profileのPATHを変更しようとしています。

export PATH=$PATH:/opt/jdk1.8/bin
echo "Path is exported."

私はいつもSSH経由でログインしているので、~/.profileに入れました。私はデフォルトのシェルとしてzsh(oh-my-zsh)を使用し、〜/ .zprofileで次のものを調達します。

source ~/.profile

奇妙なことに、SSH経由でログインすると「Pathexported」メッセージが表示されます。これはソースステートメント.zprofileが実行されていますが、$ PATHをエコーすると "/opt/jdk1.8/bin"が表示されます。 ~/.profile を手動でソーシングするとパスが正しく更新されるため、ログイン時にソーシング時にパスを正しくエクスポートしない理由がわからない。役に立つならば、すべて放浪者の箱に入っています。どんなアイデアがありますか?

編集:zsh -ixc exit 2>&1 |の出力grepパス

+/home/vagrant/.zcompdump:1254> _postpatcomps=( '(p[bgpn]m*|*top[bgpn]m)' _pbm '(texi(2*|ndex))' _texi '(tiff*|*2tiff|pal2rgb)' _tiff '-value-,(ftp|http(|s))_proxy,-default-' _urls '-value-,LC_*,-default-' _locales '-value-,*path,-default-'
_directories '-value-,*PATH,-default-' _dir_list '-value-,RUBY(LIB|OPT|PATH),-default-' _ruby '*/X11(|R<4->)/*'
_x_arguments 'yodl(|2*)' _yodl )
+/home/vagrant/.zshrc:56> export 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games'
+/home/vagrant/.zcompdump-vagrant-ubuntu-trusty-64-5.0.2:1256> _postpatcomps=( '(p[bgpn]m*|*top[bgpn]m)' _pbm '(texi(2*|ndex))' _texi '(tiff*|*2tiff|pal2rgb)' _tiff '-value-,(ftp|http(|s))_proxy,-default-' _urls '-value-,LC_*,-default-' _locales '-value-,*path,-default-'
_directories '-value-,*PATH,-default-' _dir_list '-value-,RUBY(LIB|OPT|PATH),-default-' _ruby '*/X11(|R<4->)/*'
_x_arguments 'yodl(|2*)' _yodl )
+nvm:409> PATH=+nvm:409> nvm_strip_path /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games /bin
+nvm:409> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+nvm:411> PATH=+nvm:411> nvm_prepend_path /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games /home/vagrant/.nvm/versions/node/v5.0.0/bin
+nvm:411> PATH=/home/vagrant/.nvm/versions/node/v5.0.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
+nvm:417> MANPATH=+nvm:417> nvm_strip_path /home/vagrant/.nvm/versions/node/v5.0.0/share/man:/usr/local/man:/usr/local/share/man:/usr/share/man:/opt/jdk1.8/man /share/man
+nvm:417> MANPATH=/usr/local/man:/usr/local/share/man:/usr/share/man:/opt/jdk1.8/man
+nvm:419> MANPATH=+nvm:419> nvm_prepend_path /usr/local/man:/usr/local/share/man:/usr/share/man:/opt/jdk1.8/man /home/vagrant/.nvm/versions/node/v5.0.0/share/man
+nvm:419> MANPATH=/home/vagrant/.nvm/versions/node/v5.0.0/share/man:/usr/local/man:/usr/local/share/man:/usr/share/man:/opt/jdk1.8/man
+nvm:420> export MANPATH
+nvm:422> export PATH
+nvm:424> export 'NVM_PATH=/home/vagrant/.nvm/versions/node/v5.0.0/lib/node'

ベストアンサー1

問題が何であるかを理解します。 @Lに基づいています。 Levrelのコメントによると、.zshrcにechoステートメントを追加しました。なぜなら、sshログインシェルがインタラクティブでログインだと言ったからです。もちろん、.zshrcは.zprofileの後にインポートされ、.zshrcからパスを上書きします。 Java変数のエクスポートコマンドを~/.zshrcに移動することで問題が解決しました。

おすすめ記事