如何找出哪些文件定义了“别名”?

如何找出哪些文件定义了“别名”?

当我运行该alias命令时,我看到一个别名,但我不知道它是在哪里定义的(即我找不到包含该别名定义的文件)。我检查过/etc/profile,,,,,和其他一些~/.bashrc,但无济于事。~/.profile~/.bash_profile~/.bash_login/etc/bash.bashrc

有没有办法找出alias命令从哪些文件获取信息?我的意思是该命令如何alias工作?它是否读取一些预先确定的文件来查找别名定义?

答案1

沿着Stéphane的类似答案,这是一种在跟踪模式下运行交互式 bash shell 的方法(运行单个命令),通过管道传输到仅显示和命令exit的 grep ;紧邻感兴趣的命令应该是包含别名命令的文件。sourcealiassourcealias

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'

相关内容