背景
在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/