2013-05-25 7 views
1

Ruby MRI 1.8.7을 사용하고 있으며 서버에 연결하고 .bash_profile 파일을 편집하는 Net-SSH 스크립트가 있습니다. 기본적으로 몇 개의 별칭 바로 가기가 추가됩니다. .bash_profile에 내용 예 : 나는 소스 .bash_profile을 통해 다시로드 할 때까지 이제Ruby Net/SSH - bash_profile 다시로드

alias test="echo 'test'" 

, 나는 그 별칭을 사용할 수 없습니다에 .. 문제는 내가 그물 SSH를 통해 .bash_profile을 소싱 할 수없는 것처럼 보인다는 것이다. 이것은 내가 지금까지 시도한 것입니다 :

ssh.exec!("source .bash_profile") 
ssh.exec!("source /root/.bash_profile") 
ssh.exec!("bash -c 'source ~/.bash_profile'") 

자, 사실 난 인터넷 - SSH의 별칭을 필요로하지 않습니다,하지만 난 적어도 서버에서 수동으로 bash_profile 소스 싶지 않아요. 여기에 어떤 문제가 있으며 해결 방법이 있습니까?

+0

의 당신이 어떻게되는지 확인하기 위해'source'으로 명령 인라인을 실행하려고 적이 첫 번째 줄에

source $HOME/.bash_profile 

을두고? (예 :'source ~/.bash_profile && test') – fny

+0

네, 잘 동작합니다. Ruby/SSH 세션과 다른 점이 없어야한다는 것을 의미합니까? –

+1

Ruby/SSH를 통해 해당 명령을 실행 해 보았습니다. 아마 소싱은'ssh.exec! '문장 사이에서 지속되지 않을 것이다. – fny

답변

0

bash의 큰 따옴표로 묶은 문자열에는 강타 (!)를 사용할 수 없습니다. 이 시도 : alias test='echo ''test!'''

+0

덕분에 내 글을 편집했습니다. 그러나 이것은 단지 예시 일 뿐이므로 실제 내용은 부적합합니다. 내 인생의 예제에서는 별칭/바로 가기 bash_profile (소스 ~/.bash_profile && 테스트) 수동으로 소싱 할 때 잘 작동하지만 루비/SSH 통해 소싱 할 때 –

관련 문제