Login
如何在 ssh 登錄時自動更改目錄?
我正在嘗試
ssh
在登錄時自動更改為特定目錄。我嘗試使用以下指令使該行為正常工作~/.ssh/config
:Host example.net LocalCommand "cd web"
但是每當我登錄時,我都會看到以下內容:
/bin/bash: cd web: No such file or directory
儘管
web
我的主目錄中肯定有一個文件夾。即使使用絕對路徑也會給出相同的資訊。需要明確的是,如果我cd web
在登錄後輸入,我會進入正確的文件夾。我在這裡想念什麼?
編輯:
引號/絕對路徑的不同組合會給出不同的錯誤消息:
LocalCommand "cd web" /bin/bash: cd web: No such file or directory LocalCommand cd web /bin/bash: line 0: cd: web: No such file or directory LocalCommand cd /home/gareth/web /bin/bash: line 0: cd: /home/gareth/web: Input/output error
這讓我認為引號不應該在那裡,並且發生了另一個錯誤。
cd 是一個內置的shell。LocalCommand 執行如下:/bin/sh -c <localcommand>
您想要做的事情無法通過 SSH 完成;您需要以某種方式修改 shell,例如通過
bashrc/bash_profile
.<將近十年後的編輯……>
LocalCommand
反正不是你想要的。那是在你的機器上執行的。你想要
RemoteCommand
。像這樣的東西對我有用:Host example.net RemoteCommand cd / && exec bash --login RequestTTY yes
這有效:
ssh server -t "cd /my/remote/directory; bash --login"
如果目錄不存在則創建目錄:
ssh server -t "mkdir -p newfolder; cd ~/newfolder; pwd; bash --login"
如果您不添加
bash
到路徑的末尾,那麼您將在cd
命令執行後退出。如果你不添加--login
,那麼你~/.profile
就沒有來源。