2013-03-20 2 views
3

원격 서버의 홈 디렉토리에 설치 한 명령을 실행하려고합니다. .bash_profile의 $ PATH에 이미 추가되었습니다. 나는 일반 ssh 세션을 통해 원격으로 로그인 할 때 사용할 수 있지만 Fabric은 내 $ PATH를 사용하지 않는 것 같습니다. 따라서, 나는 사용하여 내 $의 PATH에 추가하려고했습니다 패브릭의 path context manager과 같이 :

+0

실제로 원격 서버에 로그인 할 때 PATH 설정은 무엇입니까? – isedev

+0

env.path에 어떤 것이 있습니까? – alecxe

+0

@isedev 정상적인 ssh 세션을 통해 로그인 할 때 이것은 내 경로'/ usr/local/bin :/usr/bin :/bin :/usr/local/games :/usr/games :/path/to/sources입니다./drush' – user981023

답변

2

문제는에보고에 대한

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. 

감사합니다 ... :

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

직물로 응답 PATH 변수가 설정되는 방식 - 끝에 공백 문자가 추가됩니다.

검색 경로의 마지막 디렉토리는 bash에 의해 "/ path/to/source/drush"(뒤 공백) (잘못된 디렉토리)로 해석됩니다.

+0

공간을 추가하지 못하게하려면 어떻게해야합니까? with 문에는 "drush"와 my quote 문자 사이에 공백이 없습니다. – user981023

+0

패브릭에 대한'path' 컨텍스트 관리자의 소스 코드에는 다음과 같은 주석이 들어 있습니다 : "래핑 된 블록 내에서'run' 또는'sudo'에 대한 호출은 암시 적으로"PATH = $ PATH : "과 비슷한 문자열을 앞에 붙입니다 주어진 명령. " 따라서이 동작은 의도적으로있는 것 같습니다. 개발자에게 연락하여이를보고하고 그들이 왜 이렇게하는지, 버그인지 기능인지를 알아 내야합니다. 여기에 [메일 링리스트]가 있습니다. (http://lists.nongnu.org/mailman/listinfo/fab-user) – isedev

+0

감사합니다. – user981023