Bash

為什麼有些別名在 xterm 中有效,而另一些則無效?

  • April 17, 2020

我正在過渡到一個新的工作開發環境,而且我是 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'別名有效。為什麼有些別名可能起作用而另一些則不起作用?

此提示顯示您正在執行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

如果由於管理限製而無法執行 chsh,請參閱在沒有 chsh 或管理員權限的情況下更改預設 shell

如果您絕對必須使用 tcsh,因為您絕對需要依賴它的登錄腳本,並且您的管理員生活在 1990 年代並且不會更新它們,那麼您仍然可以使用不同的互動式 shell。把類似的東西

setenv SHELL /bin/bash

在您的.login(即 tcsh 在您登錄時讀取的文件)中。

引用自:https://unix.stackexchange.com/questions/580766