2013-01-24 247 views
1

我想用SSH登錄到服務器上的交互式shell,登錄後執行兩條命令。如何通過SSH登錄遠程服務器後執行一系列命令?

這工作:ssh [email protected] -t "cd /home/user2; bash --login"

以下工作無:

ssh [email protected] -t "cd /home/user2; bash --login -c 'source /home/user2/.bashrc'"

ssh [email protected] -t "cd /home/user2; bash --login -c source /home/user2/.bashrc"

ssh [email protected] -t "cd /home/user2; bash --login source /home/user2/.bashrc"

ssh [email protected] -t "cd /home/user2; bash --login; source /home/user2/.bashrc"

當我打電話SSH與-v標誌,我看到SSH會話退出之前如下:

debug1: Sending command: cd /home/user2; bash --login -c "source /home/user2/.bashrc" 
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0 

我知道這可能看起來很奇怪;我需要以user1身份登錄,以便我可以使用只能由user1運行的軟件(合法),但我想運行我的個人.bashrc並在我的個人工作目錄中工作。我無法修改/home/user1/.bashrc。有沒有更好的方法來做我想做的事情?

回答

3

我可能失去了一些東西,但爲了實現既定目標:

  1. 身份登錄USER1
  2. 設置工作目錄從user2的
到用戶2
  • 來源的.bashrc的家

    這足以說

    ssh [email protected] -t "cd /home/user2; bash --rcfile /home/user2/.bashrc -i" 
    

    注意,在大多數情況下,這將不-i,也無需提供的完整路徑的.bashrc工作:

    ssh [email protected] -t "cd /home/user2; bash --rcfile .bashrc " 
    
  • +0

    謝謝,這正是我需要的。我認爲可能有一種方法來指定一個RC文件,但我從來沒有必要做這樣的事情。 – monguin

    相關問題