Unix/Linux中的shell机制(1)(2)
在决定要切换 shell 之前,必须知道系统中安装了哪些 shell。在 Red Hat 9 中,可以通过以下命令,确定系统中已经安装的各种 shell 程序。
cat /etc/shells
在我的 Red Hat 9 系统中,得到了如下的结果:
/bin/sh
/bin/bash
/sbin/nologin
/bin/bash2
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
可以看出来,这其实是一个 shell 程序文件的列表。一般来说,/bin 和 /sbin 目录都在环境变量 PATH 中。为了切换为我们喜欢的 shell 种类,我们已经知道,shell 也仅仅是一种与系统进行交互的程序),我们只需要在命令提示符下输入 shell 在 /bin 和 /sbin 目录中的相应名称即可。
我在使用哪个shell
Unix/Linux 系统极少被重新启动,多个对 shell 有不同爱好的管理员可能操纵过计算机,我们姑且假设他们都使用相同的管理帐号。于是,这就产生了一个问题,我的终端上究竟运行着什么样的 shell?
针对这个问题,我在 Google 上搜寻了一下,有各种各样的答案。有一个回答是
echo $SHELL
我觉得这是不对的,SHELL 是环境变量,在整个会话中都不回改变,它表示的是登录用户的“默认 shell ”。还有人说用
cat /etc/passwd
这样得到的结果也是登录用户的“默认 shell ”,很显然也不能解决上述问题。
在 Red Hat 9 系统上,我用下述方法解决这个问题:首先,使用命令
echo $$
获得当前 shell 进程的 PID。我在测试中,得到的结果是 10650。
然后,使用命令
ps -A | grep 10650
获取进程列表,并进行筛选。得到这样的测试结果:
10650 pts/0 00:00:00 csh
于是得到的结论是,测试中使用的 shell 是 csh。
评论暂时关闭