当我运行该alias
命令时,我看到一个别名,但我不知道它是在哪里定义的(即我找不到包含该别名定义的文件)。我检查过/etc/profile
,,,,,和其他一些~/.bashrc
,但无济于事。~/.profile
~/.bash_profile
~/.bash_login
/etc/bash.bashrc
有没有办法找出alias
命令从哪些文件获取信息?我的意思是该命令如何alias
工作?它是否读取一些预先确定的文件来查找别名定义?
答案1
沿着Stéphane的类似答案,这是一种在跟踪模式下运行交互式 bash shell 的方法(运行单个命令),通过管道传输到仅显示和命令exit
的 grep ;紧邻感兴趣的命令应该是包含别名命令的文件。source
alias
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'