2017-10-05 61 views
0

我想在本地編寫bash function,所以當我運行此功能時,第一條命令是通過ssh連接到一個Ubuntu遠程桌面。如何使用bash配置文件功能遠程連接並訪問遠程終端

一言以蔽之:

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

所需的輸出爲某事像/home/ubuntu,但我什麼也沒得到。所以我的印象是my_func只能在本地使用,因爲當我退出遠程桌面時,我得到我的本地$HOME目錄。

回答

0

ssh可以接收表示要在遠程主機上運行的命令的參數。你可能想要的東西是這樣的:

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

我在哪裏使用單引號,以防止變量在本地機器上展開。

+0

爲什麼要增加'sh -c'? – randomir

+0

謝謝你的回答!雖然它似乎爲echo $ HOME工作,但在遠程桌面中,我設置了另一個環境變量,當我'echo'該變量而不是'$ HOME'時,我什麼也沒有打印。 – thanasissdr

+0

您需要一個shell,因爲'$ HOME'是一個shell變量。你設置的這個環境變量是否只設置了一個會話?或者你是否在例如你的bash中設置了〜/ .profile或者〜〜/ .bashrc?如果它只在一個會話中,那麼新的ssh會話將無法看到該變量。 –