当没有任何unalias时,沉默bash的unalias


7

我可以访问几个远程帐户,我通过sshfs在$ HOME / SSHFS的子目录中安装。为了提醒我我没有使用本地文件,我已经设置$PROMPT_COMMAND了一个函数prmt_cmd,我设置了一个不同的$PS1if $PWD匹配$HOME/SSHFS*。现在,要添加一些额外的保护,我想补充的-i自动标记的rmmv而且cp每当我在一个子目录就是命令$HOME/SSHFS。所以我最终得到了类似的东西

function prmt_cmd () {
if [[ $PWD == $HOME/SSHFS* ]] ; then
    PS1=some prompt
    alias rm='rm -I'
    alias mv='mv -i'
    alias cp='cp -i'
else
    # Reset the PS1, remove aliases
    PS1=my default prompt
    unalias rm mv cp
fi
}

(在实际定义中,我做了一些其他的事情,但这是无关紧要的。)但是,unalias当别名不存在时抱怨,这意味着当我不在SSHFS / *时,我会在每个提示之前收到三条错误消息。unalias好像没有开关来沉默它。所以我的问题是:有没有更好的方法来实现我想要的?也许我只是做它(完全)错了。

如果它是相关的,$BASH_VERSION = 4.1.5(1)-release在Ubuntu 10.10上。

Answers:



1

在bash中,您可以执行以下操作以在别名存在时取消别名,例如rm

[ -n "`alias -p | grep '^alias rm='`" ] && unalias rm

另一个想法是覆盖别名,即使它存在:

alias rm='/bin/rm'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.