我在哪里可以放置用户定义的shell函数?

我打算创建一个能够简化我的function的function。 function就像

function lazymode() { echo "Hello World!"; } 

所以当我在shell中使用命令lazymode时,它会输出Hello World!

我应该将用户定义的函数放在什么文件中?

取决于function。 如果它只是一个超级简单的单行,你可以创建一个别名或将函数粘贴在~/.bashrc (一个文件在启动时加载bash)。

如果你创造的东西更加丰富,那么在~/bin/创建自己的可执行脚本可能更有意义,默认情况下它不存在(它只是一个目录)但应该在你的路径中。 请记住,文件需要是可执行文件( chmod +x filename ),并以正确的#!/bin/bash节开头。

第二条路线有一些明显的好处:

  • 更容易看到可用的内容
  • 语法错误不会影响您的个人资料
  • 如果更改脚本,则无需继续重新获取bash配置
  • 只要使用完整路径,或者~/bin/也在该shell的路径中(在大多数情况下应该是AFAIK),它可用于任何shell。

最好的选择是~/.bashrc文件。

您可以直接在~/.bashrc文件中编写shell函数定义,或者,如果您有很多并且不想混淆~/.bashrc文件,可以将它们全部放在您选择的另一个文件中- 只需确保在~/.bashrc文件中获取该文件。 例如,如果带有您的函数的文件名为bash_functions ,只需在~/.bashrc文件中添加以下行:

 if [[ -f /path/to/bash_functions ]]; then source /path/to/bash_functions fi 

或者,等效地:

 if [[ -f /path/to/bash_functions ]]; then . /path/to/bash_functions fi 

在哪里. 只是source的象征性表示。 if测试确保文件/path/to/bash_functions在尝试/path/to/bash_functions之前存在。

这种技术非常类似于在~/.bashrc建立别名,方法是创建一个名为~/.bash_aliases的文件,并在~/.bashrc使用与上面类似的语法来测试它的存在然后获取它。