当我运行时echo $SHELL,输出说/bin/tcsh这意味着我正在运行一个tcshshell。但是例如当我发出以下命令时
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 次 |
| 最近记录: |