Bash
如何找出哪些文件定義了“別名”?
當我執行
alias
命令時,我看到一個我不知道它在哪裡定義的別名(即我找不到包含此別名定義的文件)。我檢查了/etc/profile
,~/.bashrc
,~/.profile
,~/.bash_profile
,和其他一些~/.bash_login
,/etc/bash.bashrc
但無濟於事。有沒有辦法找出
alias
命令從哪些文件中獲取資訊?我的意思是alias
命令如何工作?它是否讀取一些預定文件來尋找別名定義?
按照Stéphane 的類似答案,這是一種在跟踪模式下執行互動式 bash shell 的方法(執行單個命令
exit
),通過管道傳輸到僅顯示source
和alias
命令的 grep;source
緊鄰感興趣的命令alias
應該是包含別名命令的文件。bash -ix -c exit 2>&1 | grep -E 'source | \. |alias '
檢測執行:
$ tail -1 ~/.bashrc [ -f /tmp/a.bashrc ] && source /tmp/a.bashrc $ cat /tmp/a.bashrc [ -f /tmp/b.bashrc ] && . /tmp/b.bashrc $ cat /tmp/b.bashrc alias answer='echo 42' $ bash -ix -c exit 2>&1 | grep -E 'source | \. |alias ' + alias 'ls=ls --color=auto' + source /tmp/a.bashrc ++ . /tmp/b.bashrc +++ alias 'answer=echo 42'