为什么有些别名在 xterm 中有效而其他别名无效?

Jac*_*ern 0 bash xterm centos alias

我正在过渡到一个新的工作开发环境,我是 xterm 终端和 CentOS 操作系统的新手。

我正在尝试在我的 .bashrc 中设置别名:

# .bashrc
alias c='clear'
alias la='ls -a'
Run Code Online (Sandbox Code Playgroud)

但只有c别名有效:

user@host:~> la
CORRECT>lua (y|n|e|a)? no
la: Command not found.
Run Code Online (Sandbox Code Playgroud)

user@host:~> c成功清除终端。我也尝试定义其他几个别名(直接在交互式终端中),但只有c='clear'别名有效。为什么有些别名可能有效而其他别名无效?

Gil*_*il' 5

此提示表明您正在运行tcsh。您的别名.bashrc无效,因为 tcsh 不会(也不能)读取 bash 的配置文件。您在命令行上定义别名的尝试没有明显效果,因为 tcsh 也有一个名为 的命令alias,但其语法与 bash 略有不同。c正在工作,因为您的 (t)csh 配置恰好也具有相同的别名。

您可能不打算使用 tcsh。它是 1980 年代最好的交互式 shell,但 zsh 在 1990 年代赶上并超过了它,bash 在 2000 年代也是如此。切换到/bin/zsh/bin/bash作为您的登录 shell:

chsh -s /bin/bash
Run Code Online (Sandbox Code Playgroud)

如果由于管理限制而无法运行 chsh,请参阅在没有 chsh 或管理员权限的情况下更改默认 shell

如果您绝对必须使用 tcsh,因为您绝对需要依赖于它的登录脚本并且您的管理员生活在 1990 年代并且不会更新它们,您仍然可以使用不同的交互式 shell。放一些像

setenv SHELL /bin/bash
Run Code Online (Sandbox Code Playgroud)

在您的.login(这是您登录时 tcsh 读取的文件)中。