Path
SSH 呼叫看不到伺服器上存在的正確 $path
在 Ubuntu 14.04 上,我嘗試通過 Composer 建立 Drush。
我添加
PATH="~/.composer/vendor/bin:$PATH
到其中一個.bashrc
或.bash_profile
伺服器上。在伺服器上正確呼叫 Drush。
但它不適用於遠端:
ssh myalias 'drush' bash: drush: command not found
我檢查
echo $PATH
了網路伺服器和遠端,我看到了:
- 在網路伺服器上:
/home/<MY_USER>/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
- 在遠端呼叫上:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
為什麼有區別(沒有
/home/<MY_USER>/.composer/vendor/bin
)?如何為遠端回調添加正確的路徑?
我將在這裡做一些假設:
drush
安裝在~/.composer/vendor/bin
myalias
是您擁有的遠端主機的名稱drush
- 您提到的網路伺服器實際上與
myalias
您的範例命令中的相同
bash
當您以shell互動方式登錄時,將執行bash
啟動腳本.bash_profile
。如果你設置你的PATH
這裡一切都很好,你可以drush
直接找到。當您以非互動方式執行時,例如
ssh remotehost id
,沒有登錄 shell,因此.bash_profile
不會執行。但是,由於您的 shell 是執行bash
會話腳本.bashrc
。我懷疑你沒有把你的放在PATH
那裡,所以drush
找不到。有幾個選項可供您選擇。這裡有四個建議
- 如果此 shell 以前沒有呼叫過,請
.bashrc
撥打電話(我的偏好).bash_profile
- 在(簡單)中添加重複
PATH=...
行.bashrc
- 將環境設置移出
.bash_profile
並.bashrc
移入一個由.bash_profile
and提供的通用文件.bashrc
(更優雅)- 安裝
drush
在系統位置(例如/usr/local/bin
或下的某處/opt
)並確保此目錄包含在系統範圍的PATH
設置中(更難)