bash - 在多个 bash 脚本中包含常用函数
问题描述
使用 Ubuntu 18.04。我的.bashrc
文件包括以下行:
if [ -f ~/.bash_usr_functions ]; then
. ~/.bash_usr_functions
fi
在.bash_usr_functions
中,有一堆用户定义的函数,例如:
function MyAmazingFunc()
{
echo 1st param: $1
echo Function body is complex...omitted for brevity
}
现在,每当启动一个新的 Linux 终端时,输入都会MyAmazingFunc 37
按预期工作。伟大的!
现在我编写了一个新的 bash 脚本。该脚本想了解和使用AmazingFunc
. 我曾期望使用此代码自动执行此操作:
#!/bin/bash
AmazingFunc 37
但是当我使用它运行它时bash ./NewScript.sh
出现错误:Command 'MyAmazingFunc' not found
。
因此,我修改NewScript.sh
为包含以下相同的行.bashrc
:
if [ -f ~/.bash_usr_functions ]; then
. ~/.bash_usr_functions
fi
这似乎有效,但非常不雅。Sourcing.bash_usr_functions
实际上启动了一个新的子bash
进程并运行任何代码.bash_usr_functions
!这可以通过在该文件中放置类似echo Hello from user functions
或的内容来验证。read VAR1
有没有更好的方法将您自己的用户函数包含在代码库(即许多脚本)中,而不必将整个函数复制到每个 bash 脚本中或使用source
?
解决方案
将此添加到您的~/.bashrc
以将您的函数导出到随后执行的命令的环境中:
export -f MyAmazingFunc
看:help export
推荐阅读
- javascript - Rxjs 与 Lodash 对比?rxjs 可以替代 lodash 吗?
- javascript - onClick 在第一次单击时不起作用
- windows - 通过 WSL 修改 Windows 只读文件的访问时间
- python - 解析 POST 标头/消息响应的简单 python 服务器
- python-3.x - api rest 调用更新 django 模型时出现错误 415
- python - 在烧瓶服务器上运行几个 viber 机器人
- java - 位图到字节数组,像素逻辑(如何加速算法)
- sql - 结合日期和字符串
- regex - 匹配模糊模式,没有前面的单词,但只出现一次
- apache-spark - spark.createDataFrame() 与 sqlContext.createDataFrame()