Ubuntu 14.04では、Composerを介してDrushを構築しようとしました。
PATH="~/.composer/vendor/bin:$PATH
サーバー.bashrc
または.bash_profile
サーバーに追加しました。
Drush がサーバー上で正しく呼び出されます。
ただし、リモートでは機能しません。
ssh myalias 'drush' bash: drush: command not found
echo $PATH
Webサーバーとリモコンを確認してみると、次のようになります。
- 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
セッションスクリプトを実行するので.bashrc
。PATH
そこに設定していないのでdrush
見つけられないと思います。
いくつかのオプションがあります。以下は4つの提案です。
- このシェルで以前に呼び出したことがない場合は呼び出します
.bashrc
(私の好み)。.bash_profile
PATH=...
重複行を追加.bashrc
(簡易)- 環境設定
.bash_profile
を で.bashrc
提供する公開ファイルに移動します(よりエレガント)。.bash_profile
.bashrc
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 スクリプトを使用してコマンドが実行されます。