~/.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로 이동하면 문제가 해결되었습니다.