2013-05-25 2 views
1

Я использую Ruby MRI 1.8.7, и у меня есть сценарий Net-SSH, который подключается к серверу и редактирует файл .bash_profile. В основном несколько ярлыков псевдонимов добавлены. Пример .bash_profile содержания:Ruby Net/SSH - reload bash_profile

alias test="echo 'test'" 

Теперь я не могу использовать эти псевдонимы, пока я не перезагружать с помощью источника .bash_profile .. Проблема заключается в том, что кажется, что я не могу источник .bash_profile через Net-SSH. Это то, что я пытался до сих пор:

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

Теперь, на самом деле я даже не нужны псевдонимы в Net-SSH, но я по крайней мере не хочу источник bash_profile вручную на сервере. В чем проблема, и есть ли какие-либо решения?

+0

Вы пытались выполнить команду инлайн с 'source', чтобы посмотреть, что происходит? (например, 'source ~/.bash_profile && test') – fny

+0

да, он отлично работает. вы подразумеваете, что с сеансом Ruby/SSH не должно быть ничего другого? –

+1

Я имел в виду, что вы пытались выполнить эту команду через Ruby/SSH. Возможно, источник не сохраняется между операторами 'ssh.exec!'. – fny

ответ

0

Вы не можете иметь взрыв (!) В строке с двойными кавычками в bash. Попробуйте это: alias test='echo ''test!'''

+0

спасибо Я отредактировал мое сообщение. Однако это всего лишь иллюстративный пример, поэтому фактический контент не имеет значения. В моем примере реальной жизни alias/shortcut отлично работает при поиске bash_profile вручную (source ~/.bash_profile && test), но не при поиске его через Ruby/SSH –

0

ставит

source $HOME/.bash_profile 

на первой линии из .bashrc

Смежные вопросы