如何保存bash中的函数以供以后使用?

如何保存bash中的函数以供以后使用?

我有这个函数可以从IP获取MAC地址:

ip2arp()  {
   local ip="$1"
   ping -c1 -w1 "$ip" >/dev/null
   arp -n "$ip" | awk '$1==ip {print $3}' ip="$ip"
   }

以后使用的正确方法是什么?作为 sh 保存到 /usr/bin 并使其可执行,或者将其保存在主目录中并在 bash 中创建别名?有正确和错误的方法吗?

答案1

如果它仅供您个人使用,那么您可以将其作为函数添加到 shell 的初始化文件中,例如~/.bashrc.

有关 Bash 中不同初始化文件的摘要,您可以参考Bash 初学者指南

另请参阅Bash 参考手册

典型的模式是将函数定义放入~/.bashrc文件中,并从~/.bash_profile.

但值得注意的是,使用哪个配置文件取决于您的操作系统、终端应用程序和您自己的偏好。例如,请参阅 AskDifferent 上的以下帖子:

另请参阅 StackOverflow 上的这篇文章:

或者,您可以为自己的脚本创建一个个人目录(例如我使用~/local/bin),然后将该目录添加到您的配置文件中的 PATH (即export PATH="${HOME}/local/bin:${PATH})。

如果您想让其他用户可以使用它,那么您可以将其/usr/local/bin作为脚本(而不是/usr/bin)放入。

有关放置可执行文件的位置的进一步讨论,请参阅以下帖子:

答案2

如果您确定仅从命令行使用此函数,那么您当然可以将其放入初始化文件中。

如果您也打算从其他 shell 脚本中使用它,则必须采取以下方法:

  • 您可以围绕由一个或多个函数定义组成的库来组织您的编程环境,这些函数定义是从需要它们的 shell 脚本中获取的,或者

  • 您放弃使用函数的想法并从中创建可执行脚本。

只要你的函数不应该操作 shell 变量,就由你决定走哪条路。使用单独的可执行脚本而不是函数当然具有可以从以下位置执行的优点:任何其他程序,不仅来自 bash。

相关内容