在UNIX中更改Shell的有效方法

时间:2017-12-27 17:02:41

标签: bash unix tcsh

几年前我曾经使用过UNIX,我刚刚开始重新开始使用它。我想知道是否有人可以帮我解决问题。

例如,如果我在bash中,我说chsh --shell /bin/tcsh之后我会被提示输入我的密码。如果我试着说echo $SHELL它就不会告诉我我已经改变了贝壳。它仍然告诉我我在bash,而不是C shell。所以我必须退出并重启。一旦我退回它,然后它告诉我在C shell中。

是否有更有效的方法来更换贝壳?一个不需要我登录和退出的人?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

chsh(1):更改您的登录shell

使用chsh更改shell后,每次打开终端时都会自动登录到该shell。

如果你想使用不同的shell临时,只需直接运行该shell:“tcsh”,“zsh”等。

如果您想使用特定的shell作为脚本,请使用shebang“#!”。

示例 - shell脚本第一行的以下内容将确保脚本以sh运行(您可以对系统上可用的任何shell执行此操作):

#!/bin/sh

答案 1 :(得分:0)

请务必使用以下方法检查当前的shell:

echo $0

通过这种方式,您将获得正在运行的确切进程(当前shell)。如果您打印$ SHELL,它将返回您登录服务器时将打开的默认shell,除非您需要它不可靠。

ubuntu$ echo $SHELL
/bin/bash
ubuntu$ echo $0
-bash
ubuntu$ sh
\[\e[31m\]\u\[\e[m\]$ echo $SHELL
/bin/bash
\[\e[31m\]\u\[\e[m\]$ echo $0
sh
\[\e[31m\]\u\[\e[m\]$

问候!