2017-10-05 5 views
0

bash functionをローカルに書きたいので、この機能を実行すると最初のコマンドはubuntuリモートデスクトップにsshで接続することです。bashプロファイル関数を使用してリモートから接続し、リモート端末にアクセスする方法

一言で言えば:

my_func() { 
    ssh blah blah blah; 
    echo $HOME; 
} 

所望の出力は/home/ubuntuのようなSTHですが、私は何を取得します。だから私はmy_funcがローカルでしか使えないという印象を持っています。なぜなら私はリモートデスクトップを終了するとローカルの$HOMEディレクトリを取得するからです。

答えて

0

sshは、リモートホスト上で実行するコマンドを表す引数を取ることができます。

my_func() { ssh [email protected] sh -c 'echo $HOME'; } 

ここでは、ローカルマシンで変数が展開されないように単一引用符を使用しています。

+0

追加の 'sh -c'はなぜですか? – randomir

+0

ありがとうございました! 'echo $ HOME'では動作するようですが、リモートデスクトップでは別の環境変数を設定しましたが、' $ HOME'ではなく 'echo'を実行すると何も表示されません。 – thanasissdr

+0

'$ HOME'はシェル変数であるため、シェルが必要です。あなたが設定したこの環境変数は、そのセッションだけで設定されていますか?あるいは、例えば、あなたのbash '〜/ .profile'や'〜/ .bashrc'を設定しましたか? 1つのセッションだけであれば、新しいsshセッションはその変数を見ることができません。 –

関連する問題