在UNIX中更改Shell的有效方法

问题描述 投票:0回答:2

几年前我曾经和UNIX一起工作过,我刚刚开始重新回到它。我想知道是否有人可以帮我解决问题。

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

有没有更有效的方法来改变贝壳?一个不需要我登录和退出的人?

先感谢您。

bash unix tcsh
2个回答
0
投票

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

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

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

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

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

#!/bin/sh

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\]$

问候!

© www.soinside.com 2019 - 2024. All rights reserved.