Bash
為什麼有些別名在 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'
別名有效。為什麼有些別名可能起作用而另一些則不起作用?
此提示顯示您正在執行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 在您登錄時讀取的文件)中。