2013-05-25 4 views
1

J'utilise Ruby MRI 1.8.7 et j'ai un script Net-SSH qui se connecte à un serveur et édite le fichier .bash_profile. Fondamentalement, quelques raccourcis alias sont ajoutés. Exemple de contenu .bash_profile:Ruby Net/SSH - reload bash_profile

alias test="echo 'test'" 

Maintenant, je ne peux pas utiliser ces alias jusqu'à ce que je recharge via .bash_profile source .. Le problème est qu'il semble que je ne peux pas la source .bash_profile via Net-SSH. C'est ce que je l'ai essayé jusqu'à présent:

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

Maintenant, en fait je ne même pas besoin de les alias Net-SSH, mais au moins je ne veux pas la source bash_profile manuellement sur le serveur. Quel est le problème ici, et y a-t-il des solutions à cela?

+0

Avez-vous essayé d'exécuter une commande en ligne avec le 'source' pour voir ce qui se passe? (par exemple 'source ~/.bash_profile && test') – fny

+0

oui cela fonctionne bien. impliquez-vous qu'il ne devrait pas y avoir quelque chose de différent avec la session Ruby/SSH? –

+1

Je voulais dire que vous avez essayé d'exécuter cette commande via Ruby/SSH. Peut-être que le sourcing ne persiste pas entre les instructions 'ssh.exec!' – fny

Répondre

0

Vous ne pouvez pas avoir un bang (!) Dans une chaîne entre guillemets doubles dans bash. Essayez ceci: alias test='echo ''test!'''

+0

merci d'avoir édité mon post. Cependant, ceci n'est qu'un exemple illustratif, donc le contenu réel n'était pas pertinent. Dans mon exemple réel, l'alias/raccourci fonctionne correctement lors de l'approvisionnement manuel de bash_profile (source ~/.bash_profile && test), mais pas lors de l'approvisionnement via Ruby/SSH –

0

met

source $HOME/.bash_profile 

à première ligne de Bashrc