您可以尝试以下几种方法:
- 用于
bash -v
查看shell启动期间正在读取的行
- 用于
bash -x
查看在shell启动期间正在运行什么命令
- 仅使用一个启动文件运行
bash -v
该-v
选项使bash
读取的每个脚本文件中的每一行都打印出来。
从运行开始
bash -i -v >bash-i.out 2>&1
等待5-10秒钟,然后按Ctrl+C。
这将为您提供一个名为的文件bash-i.out
,就像所有合并(或串联)的启动文件一样。
然后使用less
打开文件,并使用查找别名/aliasname
。
现在,比较该别名相对于文件中其他行的显示位置。例如,在大多数系统上,/etc/bash.bashrc
顶部都有一个注释,/etc/bash.bashrc
并且~/.bashrc
也有一个注释。
如果它在您的顶部上方~/.bashrc
,则可能是/etc
定义别名的启动文件,否则它在您~/.bashrc
的文件中,或者是通过source
or .
(点命令)包含的文件。
如果没有显示别名,请尝试
bash -l -v >bash-l.out 2>&1
这告诉bash是一个登录shell,它读取一些不同的启动文件,例如/etc/profile
和~/.bash_profile
而不是/etc/bash.bashrc
and ~/.bashrc
。
bash -x
如果bash -v
没有给出明确的答案,请尝试运行bash -x
,它会打印外壳正在运行的命令,而不是外壳正在读取的行。
除了更改-v
为之外,方法基本上与上述方法相同-x
。(如果需要,可以将两者一起使用。)
仅使用一个启动文件运行
bash -i --rcfile="$HOME/.bashrc"
看看你是否有别名。
如果系统具有,请尝试将rcfile
set设置为/etc/bash.bashrc
。
然后尝试
bash -l --rcfile="$HOME/.bash_profile"
并对每个profile
名称相同的bash启动文件执行相同的操作,例如更改$HOME/.bash_profile
为/etc/profile
。
无论采用哪种方式显示别名,都会告诉您应该开始查看的文件。
set -x
按照建议的方式放在您的顶部,看看是否能为您缩小范围。