" Unsource" .bash_profile或.bashrc脚本

时间:2016-11-24 22:12:57

标签: bash .bash-profile

我的〜/ .bash_profile文件中有一个函数,如下所示:

function foo {
  echo "foo"
}

获取.bash_profile文件后,

source ~/.bash_profile

我可以在命令行运行foo:

$ foo

说我想将foo的名称更改为bar

function bar {
  echo "foo"
}

我重新获取.bash_profile文件

source ~/.bash_profile

在命令行中似乎可以使用foobar。这是为什么?如何清除旧的.bash_profile代码内存或存储的位置?

2 个答案:

答案 0 :(得分:2)

source命令只是将执行文件的结果与当前环境合并。没有恢复到以前的状态。

经过这样的改变,大多数人关闭所有现有窗口并打开新窗口:问题解决了;

但是,您可以在获取命令之前删除所有函数(不仅是源文件中包含的函数,而且所有,这可能有点矫枉过正),如下所示:

unset `declare -F | cut -f3 -d" "`

declare -F列出了这些函数,只需获取其名称并将其传递给unset)。

答案 1 :(得分:1)

你需要取消设置foo

unset -f foo

通过采购您的bash配置文件,您基本上只需添加'更多信息,你不会创造一个新的外壳。