Path

SSH 呼叫看不到伺服器上存在的正確 $path

  • April 28, 2017

在 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找不到。

有幾個選項可供您選擇。這裡有四個建議

  1. 如果此 shell 以前沒有呼叫過,請.bashrc撥打電話(我的偏好).bash_profile
  2. 在(簡單)中添加重複PATH=....bashrc
  3. 將環境設置移出.bash_profile.bashrc移入一個由.bash_profileand提供的通用文件.bashrc(更優雅)
  4. 安裝drush在系統位置(例如/usr/local/bin或下的某處/opt)並確保此目錄包含在系統範圍的PATH設置中(更難)

引用自:https://unix.stackexchange.com/questions/351241