如何在bash中保存函数以备后用?

Hrv*_*e T 4 bash function

我有这个功能可以从 IP 获取 MAC 地址:

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

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

iga*_*gal 5

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

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

另请参阅Bash 参考手册

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

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

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

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

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

有关将可执行文件放在哪里的进一步讨论,请参阅以下帖子:

  • `~/.profile` 是用来配置你的登录会话,而不是你的 shell。只有登录 shell 读取该文件。`bash` 自定义进入 `~/.bashrc` (4认同)