为什么有些别名在 xterm 中有效,而另一些则无效?

为什么有些别名在 xterm 中有效,而另一些则无效?

我正在过渡到新的工作开发环境,而且我对 xterm 终端和 CentOS 操作系统还不熟悉。

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

# .bashrc
alias c='clear'
alias la='ls -a'

但只有c别名有效:

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

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

答案1

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

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

chsh -s /bin/bash

如果由于管理限制而无法运行 chsh,请参阅无需 chsh 或管理员权限即可更改默认 shell

如果您绝对必须使用 tcsh,因为您绝对需要依赖它的登录脚本,并且您的管理员生活在 20 世纪 90 年代并且不会更新它们,那么您仍然可以使用不同的交互式 shell。把类似的东西

setenv SHELL /bin/bash

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

相关内容