我正在尝试查找alias已声明特定内容的位置。我已经搜索了所有我知道的常见位置来寻找别名:
没有运气。
我知道这是alias因为当我这样做时which COMMAND,我得到:
alias COMMAND='/path/to/command'
/path/to/command
Run Code Online (Sandbox Code Playgroud)
有没有办法找到哪个文件声明alias只知道alias名称?
uto*_*und 32
我会寻找/etc/profile.d/冒犯的alias。
您还可以执行以下操作来找到它:
grep -r '^alias COMMAND' /etc
Run Code Online (Sandbox Code Playgroud)
这将grep通过文件递归查找以alias COMMAND.
如果一切都失败了,把它放在你的最后 ~/.bashrc
unalias COMMAND
Run Code Online (Sandbox Code Playgroud)
Mik*_*kel 28
您可以尝试以下几点:
bash -v查看 shell 启动期间正在读取哪些行bash -x查看 shell 启动期间正在运行的命令bash -v
该-v 选项bash在读取时打印它读取的每个脚本文件中的每一行。
从跑步开始
bash -i -v >bash-i.out 2>&1
Run Code Online (Sandbox Code Playgroud)
等待 5-10 秒,然后按Ctrl+C。
这将为您提供一个名为的单个文件bash-i.out,就像您所有的启动文件合并(或连接)在一起一样。
然后使用less打开文件并使用 搜索别名/aliasname。
现在,比较该别名相对于文件中其他行的出现位置。例如,在大多数系统上,/etc/bash.bashrc顶部有一条评论,上面写着/etc/bash.bashrc并且~/.bashrc也有一个。
如果它在你的顶部之上~/.bashrc,那么它可能是一个/etc定义别名的启动文件,否则它在你的~/.bashrc或它包含的文件中,通过source或.(点命令)。
如果那没有显示别名,请尝试
bash -l -v >bash-l.out 2>&1
Run Code Online (Sandbox Code Playgroud)
这告诉 bash 是一个登录 shell,它读取一些不同的启动文件,例如/etc/profileand~/.bash_profile而不是/etc/bash.bashrcand ~/.bashrc。
bash -x
如果bash -v没有给您明确的答案,请尝试 running bash -x,它会打印 shell 正在运行的命令,而不是 shell 正在读取的行。
方法与上述基本相同,只是-v改为-x。(如有必要,您可以同时使用两者。)
仅使用一个启动文件运行
bash -i --rcfile="$HOME/.bashrc"
Run Code Online (Sandbox Code Playgroud)
看看你有没有别名。
如果您的系统有rcfileset to,请尝试相同的设置/etc/bash.bashrc。
然后试试
bash -l --rcfile="$HOME/.bash_profile"
Run Code Online (Sandbox Code Playgroud)
并对profile名称中包含的每个 bash 启动文件执行相同操作,例如更改$HOME/.bash_profile为/etc/profile.
无论哪种方式使别名出现,都会告诉您应该开始查看的文件。