定义新别名和函数后刷新别名和函数吗?

定义新别名和函数后刷新别名和函数吗?

当我在文件中定义新别名.bash_aliases或文件中新函数.bashrc时,是否有一些刷新命令能够立即使用新别名或函数而无需关闭终端(在我的情况下为 xfce4-terminal,打开了几个选项卡,打开了许多文件并在工作中)?

答案1

获取更改的文件将提供对当前终端中新编写的别名或函数的访问,例如:

source ~/.bashrc

另一种语法:

. ~/.bashrc

请注意,如果您的终端中运行了许多 bash 实例(您提到了多个选项卡),则必须在每个实例中运行它。

答案2

. ~/.bashrc在命令行中键入将运行.bashrc,因此将创建该文件中定义的任何函数。

.bashrc然后它本身也会调用并运行.bash_aliases如果它存在)如果.bashrc里面有这个代码:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

而单独使用. ~/.bash_aliases(例如在命令行)只会尝试运行.bash_aliases而不涉及 .bashrc,并且如果文件不存在则会给出错误(因此在 时进行文件检查测试.bashrc)。

答案3

有时你会想将别名变成函数,但是当你获取 bashrc 文件时,可能会出现一个奇怪的错误:

. ~/.bashrc
bash: /home/username/.bashrc: line 38: syntax error near unexpected token `('
bash: /home/username/.bashrc: line 38: `hello_world() {'

发生这种情况可能是因为别名与新定义的函数的名称冲突。据我所知,为了避免这种情况,需要取消所有内容的别名,然后获取 bashrc 文件:

bash-4.3 $
unalias -a && . $HOME/.bashrc

相关内容