Interactive and non-interactive shell環境變量的差異


背景

在mac上安裝mosh server后,用mosh client去連接,一直報command not found的錯

zsh: command not found: mosh-server

但是在我的mac上已經成功安裝了mosh server, 並且在.zshrc中已經設置了環境變量了,在iterm上也能夠正確的找到mosh-server的命令;

原因

在網上查找了一番,發現shell是有四種模式的: interactive、non-interactive、login、non-login

每種模式配置文件的加載規則都不一樣,導致PATH會有差異;我在.zshrc文件中設置的PATH環境變量,只在interactive 模式下生效,所以當mosh client以non-interactive的模式去登錄mac時,環境變量就是默認值,所以找不到mosh-server命令

解決方案

zsh在non-interactive模式下,加載的配置文件是.zshenv,所以在~/.zshenv中重新設置一遍環境變量,就正常了

echo "export PATH=$PATH:/usr/local/bin" >> ~/.zshenv

參考鏈接

https://github.com/mobile-shell/mosh/issues/457

http://feihu.me/blog/2014/env-problem-when-ssh-executing-command-on-remote/

http://zsh.sourceforge.net/Intro/intro_3.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM