
我的 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
,所以檢查它們的內容是否有可以做到這一點的東西。