Linux
bashrc + 為什麼源不刷新 .bashrc 文件
我們將以下行添加到
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
採購
~/.bashrc
不會神奇地重置所有設置。該文件只是一堆要執行的命令。如果它們在乾淨的 shell 中執行,那麼您將得到您所期望的。但如果別名已經定義,文件中缺少它不會取消別名。想一想:如果您手動執行文件中的命令,則不會影響已定義的別名。文件中沒有
unalias reboot
。採購~/.bashrc
是完全執行命令,而不是“手動”。不要將
.bashrc
其視為保存 shell 目前設置的文件。它意味著在乾淨的外殼中自動獲取一次。人們有時會手動再次獲取它,如果他們添加一些東西,它會起作用*,因為添加的東西會被執行。被移除的東西不能被執行或神奇地恢復。啟動一個新的 shell 並.bashrc
按照它的設計方式完成它的工作。請注意,繞過別名或函式非常容易。別名或函式不是禁止重啟的好方法。
- 它適用於第二次執行舊事物可能產生的副作用。