SSH呼び出しにサーバーに存在する正しい$ 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 $PATHWebサーバーとリモコンを確認してみると、次のようになります。

  • Webサーバーから:/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)?リモートコールバックに正しいパスを追加するにはどうすればよいですか?

答え1

ここでは、次のようないくつかの仮定をしましょう。

  • drushにインストール~/.composer/vendor/bin
  • myalias現在存在するリモートホストの名前。drush
  • myalias言及したWebサーバーは実際には例のコマンドと同じです。

bashシェルを使用して対話的にログインすると、起動bashスクリプトが実行されます。ここで.bash_profile設定すると、PATHすべてが正常で、直接見つけることdrushができます。

たとえば、非対話式で実行すると、ssh remotehost idログインシェルがないため.bash_profile実行されません。しかし、シェルはbashセッションスクリプトを実行するので.bashrcPATHそこに設定していないのでdrush見つけられないと思います。

いくつかのオプションがあります。以下は4つの提案です。

  1. このシェルで以前に呼び出したことがない場合は呼び出します.bashrc(私の好み)。.bash_profile
  2. PATH=...重複行を追加.bashrc(簡易)
  3. 環境設定.bash_profileを で.bashrc提供する公開ファイルに移動します(よりエレガント)。.bash_profile.bashrc
  4. drushシステムの場所(/usr/local/binまたは下のいずれか)にインストールし、そのディレクトリ/optがシステム全体PATHの設定に含まれていることを確認してください(難しい)。

答え2

PATH="~/.composer/vendor/bin:$PATH" ssh myalias 'drush'

変更されたPATHコンテンツsshとそのコンテンツが呼び出すすべてのユーティリティが提供されます。

答え3

別のオプション(ここを参照:https://www.drush.org/latest/site-aliases/)

drush スクリプトや drush ランチャーにパスを追加するだけです。

Drushサイトエイリアスファイル(通常はself.site.yml)に次を追加します。

paths:
    drush-script: '/path/to/drush'

これにより、必ず PATH 変数にある必要はない drush スクリプトを使用してコマンドが実行されます。

関連情報