4

リモートサーバーのホームディレクトリにインストールしたコマンドを実行しようとしています。.bash_profileの$PATHにすでに追加されています。通常のsshセッションを介してリモートでログインすると使用できますが、Fabricが$PATHを取得していないようです。したがって、次のように、Fabricのパスコンテキストマネージャーを使用して$PATHに追加しようとしました。

def test_path():
    print('My env.path setting: %(path)s' % env)
    with path('/path/to/sources/drush'):
        run('echo $PATH')
        run('drush')

ファブリックは次のように応答します。

Executing task 'test_path'
My env.path setting:
run: echo $PATH
out: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
out:

run: echo $PATH
out: /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/path/to/sources/drush
out:

run: drush
out: /bin/bash: drush: command not found
out:

Fatal error: run() received nonzero return code 127 while executing!

Requested: drush
Executed: /bin/bash -l -c "export PATH=\"\$PATH:\"/path/to/sources/drush\" \" && drush"

Aborting.

見てくれてありがとう...

4

1 に答える 1

2

問題は、PATH変数が設定される方法にあります-その最後に追加のスペース文字があります:

/bin/bash -l -c "export PATH=\"\$PATH:\"/path/to/sources/drush\" \" && drush"
                                                                ^HERE

検索パスの最後のディレクトリは、bash「/ path / to / source / drush」(末尾のスペース)として解釈されます。これは無効なディレクトリです。

于 2013-03-21T11:48:31.820 に答える