我们将以下行添加到bashrc
文件中
alias reboot="echo you not allowed to do reboot on this machine - sorry"
所以我们得到
more ~/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
alias reboot="echo you not allowed to do reboot on this machine - sorry"
然后我们做了
source ~/.bashrc
事实上,当我们这样做时
reboot
我们有
you not allowed to do reboot on this machine - sorry
但是当我们想要回到真正的重新启动时,我们删除了该行 --> alias reboot="echo you not allowed to do reboot on this machine - sorry"
如下:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
然后我们刷新 bashrc
source ~/.bashrc
但当我们尝试重新启动时,我们仍然得到旧的别名:
you not allowed to do reboot on this machine - sorry
我们在这里缺少什么?
另一个带有函数的例子
echo '
function reboot
{
echo "ERROR reboot command not allowed on this machine"
return 1
}
' >>/root/.bashrc
上面的例子我们不能做unalias
答案1
采购~/.bashrc
不会神奇地重置所有设置。该文件只是一堆要执行的命令。如果它们在干净的 shell 中执行,那么您将得到您所期望的结果。
但如果别名已经定义,文件中缺少别名也不会取消别名。想想看:如果您手动执行文件中的命令,则不会影响已定义的别名。unalias reboot
文件里没有。采购~/.bashrc
实际上就是执行命令,只是不是“手动”执行。
不要将其.bashrc
视为保存 shell 当前设置的文件。它的意思是有来源的一旦进入干净的外壳,就会自动。人们有时会再次手动获取它,如果他们添加一些东西,它就会起作用*,因为添加的东西会被执行。被删除的东西不能被执行或神奇地恢复。启动一个新的 shell,并.bashrc
按照其设计的方式完成其工作。
请注意,绕过别名或函数是非常容易的。别名或函数不是禁止重新启动的好方法。
* 它适用于第二次执行旧事物可能产生的副作用。