当我运行时echo $SHELL
,输出说/bin/tcsh
这意味着我正在运行一个tcsh
shell。但是例如当我发出以下命令时
alias emacs 'emacs -nw'
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
bash: alias: emacs: not found
bash: alias: emacs -nw: not found
Run Code Online (Sandbox Code Playgroud)
当我发出alias emacs="emacs -nw"
它运行正常!
这令人困惑,因为我正在运行,tcsh
但命令由bash
.
可能是什么原因?
ter*_*don 53
$SHELL
不一定是您当前的 shell,它是默认的登录 shell。要检查您正在使用的外壳,请尝试
ps $$
Run Code Online (Sandbox Code Playgroud)
这应该适用于ps
支持 BSD 语法的最新 Unix/Linux 。否则,这是便携式(POSIX)方式
ps -p $$
Run Code Online (Sandbox Code Playgroud)
如果您正在运行,那应该返回如下内容tcsh
:
8773 pts/10 00:00:00 tcsh
Run Code Online (Sandbox Code Playgroud)
如果你想tcsh
成为你的默认 shell,请使用chsh
来设置它。
小智 10
在命令行中,您还可以使用该$0
变量来确定您使用的是哪个 shell。例如:
~$ echo $0
/bin/bash
~$ ksh
$ echo $0
ksh
Run Code Online (Sandbox Code Playgroud)
注意:您不能在脚本中使用 $0 来确定 shell,因为 $0 将是脚本本身。
归档时间: |
|
查看次数: |
40308 次 |
最近记录: |