透過 ssh 執行遠端命令的預設 shell

透過 ssh 執行遠端命令的預設 shell

我的 ubuntu 10.04 機器上有以下設置

~$ echo $SHELL
/bin/bash
~$ grep $USER /etc/passwd
ubuntu:x:1000:1000:Ubuntu,,,:/home/ubuntu:/bin/bash

但是,當我運行遠端命令時,zsh 似乎是預設 shell:

$> ssh -i /path/to/ssh/key ubuntu@<my-host> "echo $SHELL"
/bin/zsh

我該如何解決?

答案1

您看到的是本機登入 shell。

ssh user@host "echo $SHELL"

上面的內容$SHELL在 ssh 運行之前展開,因為它是用雙引號引起來。因此,在遠端,您正在運行echo /bin/zsh而不是echo $SHELL.

使用單引號以避免$SHELL在本地擴充。

ssh user@host 'echo "$SHELL"'

Bash常見問題 96了解更多相關資訊。

答案2

您或其他人必須已使用zsh.要切換回 bash,請使用:

chsh -s /bin/bash

在您的遠端主機上。

順便說一句,我會推薦zsh它是一個很棒的 shell,具有許多非常有用的功能,並且啟用它並不會阻止您使用 bash

#!/bin/sh 

仍然會在 bash 下運行你的腳本。

答案3

閱讀有關登入與非登入 shell 的內容。我懷疑你在~/.bash_profile~/.bashrc、 或中做了一些有趣的事情~/.profile,所以檢查它們的內容是否有可以做到這一點的東西。

相關內容