有一个拼写错误导致登录时出现错误消息(有人输入了lias
而不是alias
)。我已针对各个用户检查了/etc/bashrc
以及~/.bashrc
和/etc/profile
以及~/.bash_profile
,但这些文件均不包含系统的自定义别名。哪些替代文件可以包含系统范围的别名?
答案1
很高兴你找到了它,但是这里有一种从一般意义上查看所有登录文件的方法:
# run strace, see every syscall
strace -o /tmp/bash.out bash --login
(退出 bash shell)
# filter out opens that returned a descriptor, then use sed to get the file
< /tmp/bash.out grep -o 'open("[^,]*,[^)]*)[ \t]=[ \t][0-9]' | sed -e 's/^[^"]*"//' -e 's/".*$//' | sort -u > /tmp/openedfiles.txt
# grep for the broken alias, or whatever
< /tmp/openedfiles.txt xargs grep '^[ \t]*lias'
strace 是那些如果你知道如何使用就会产生神奇效果的命令之一。
答案2
找到了:/etc/profile.d/useralias.sh
答案3
对于那些快速而肮脏的人群,我会...
grep ^lias ~/.* ; grep ^lias /etc/* /etc/*/*
如果这不能为我指明正确的方向,我就会诉诸......
grep alias ~/.* > /tmp/alias.txt ; grep alias /etc/* /etc/*/* >> /tmp/alias.txt ; less /tmp/alias.txt
并校对所有别名行。