LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1366|回复: 10

如何找出系统中已定义的alias的出处?[基本解决]

[复制链接]
发表于 2005-1-14 21:32:08 | 显示全部楼层 |阅读模式
我的是MDK9.2, 终端键入:alias,显示所有已定义了的alias,
alias cd..='cd ..'
alias cp='cp -i'
alias d='ls'
alias df='df -h -x supermount'
alias du='du -h'
alias kde='xinit /usr/bin/startkde'
alias l='ls'
alias la='ls -a'
alias ll='ls -l'
alias ls='ls -F --show-control-chars --color=auto'
alias lsd='ls -d */'
alias md='mkdir'
alias mv='mv -i'
alias p='cd -'
alias rd='rmdir'
alias rm='rm -i'
alias s='cd ..'

       每个人的习惯不同, 我们需要根据喜好定制自己的alias,这个还好办, 可还需要找到所有这些alias的出处,有些要删除。比如 臭名昭著的rm,按我个人的习惯一定要删,还有无聊的l,la, 该死的cd.. s等等,这些都会误导我们对于shell命令的正确认识,不能仅图一时之快。
     可是,想全部找到它们并不容易,在 .bashrc, /etc/profile, /etc/bashrc中都没有发现它们的痕迹,查找文件的命令中能按内容搜索的只有grep(或fgrep), 但它似乎只能查找当前目录中的可读文件,却无法进入文件夹继续查找,(也无法查找隐藏文件), 所以想请教高手,用什么办法能把它们全部揪出来。

更正: grep -r 可以在目录下递归查找, 后来才学会,嘻嘻
发表于 2005-1-14 21:42:55 | 显示全部楼层
# find /etc/ -exec grep alias {} \;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-14 22:06:24 | 显示全部楼层
当然用unalias命令可以删除不想要的alias,但还是想找出它们藏身之处,谢谢楼上指点。
回复 支持 反对

使用道具 举报

发表于 2005-1-15 01:18:02 | 显示全部楼层
默认的alias有shell提供,用户可以从新自定义它们,在profile文件里!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-15 16:12:08 | 显示全部楼层
文件已经找到,不是搜索到的,而是在网上找的的资料, 告诉我  /etc/profile.d/alias.sh这个文件, 正是它。  而且经过实验, 发现shell内建命令alias 与 unalias 只能有临时的效果,退出系统之后将失效, 最稳妥的办法是修改/etc/profile.d/alias.sh这个文件, 可以永久删除你不想要的alias !
回复 支持 反对

使用道具 举报

发表于 2005-1-18 00:41:32 | 显示全部楼层
补充一下, alias.sh不是在所有发行版都有的。系统alias的设定还是要根据版本来。 不过在自己用户配置文件中加入alias基本上都是可行的。希望正在发展的LSB能解决这些问题。
回复 支持 反对

使用道具 举报

发表于 2005-1-18 12:24:02 | 显示全部楼层
我的系统就没有/etc/profile.d/alias.sh
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-5 13:57:26 | 显示全部楼层
是啊,能作alias的地方真多,而且MDK确实是比较有个性的一个发行版
不过六楼,你提到的 LSB , 我最近也有耳闻, 不就是那四家组成的吗,他们能有多大的影响力,不好说, 这里不是讨论这个问题的地方,如果有专门这方面的贴,我倒是希望说上一两句
回复 支持 反对

使用道具 举报

发表于 2005-2-12 18:33:29 | 显示全部楼层
我在/etc/profile发现如下一段:
for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        . $i
    fi
done
我不懂脚本,但我猜意思是用户登录后寻找profile.d目录下的*.sh文件并执行
于是我创建了一个alias.sh的脚本文件。
然后logout再登录。结果如我所料。嘿嘿。。
我用grep -F "alias *=*" -r /etc 搜索了一下,
发现已有的alias定义大多在/etc/profile.d/*.sh文件中。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-21 01:14:27 | 显示全部楼层
楼上真细心, 多谢了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表