我的 Ubuntu 机器上安装了一个特定的应用程序/usr/local/MYPROGRAM/bin/myapp
,当我尝试myfn
在 bash 脚本中使用它时mybashscript.sh
,它会给出一个错误,指出myfn
未找到该命令,但如果我myfn
从普通终端窗口调用它,它工作正常,因为它是在文件中找到,所以我想知道如何从 bash 脚本中~/.bashrc
调用?myfn
mybashscript.sh
这是mybashscript.sh
:
#!/bin/bash -i
alias brc='source ~/.bashrc'
source /usr/local/MYPROGRAM/bin/myapp
#exec bash
echo "******************pathhhhhhhh************"
echo $PATH
echo "******************pathhhhhhhh************"
/usr/local/MYPROGRAM/bin/myapp
这是我运行时的输出./mybashscript.sh
:
bash: /bin/realbin/myapp: No such file or directory
******************pathhhhhhhh************
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
******************pathhhhhhhh************
/usr/local/MYPROGRAM/bin/myapp: 3: /usr/local/MYPROGRAM/bin/myapp: /bin/realbin/myapp: not found
答案1
用于source
将函数加载到脚本中:
source /usr/local/MYPROGRAM/bin/myapp
要使该函数全局可用于所有子 shell(例如脚本),请使用export
.在您的情况下,此命令将遵循 中的函数定义~/.bashrc
。
export -f myfn
编辑:您遇到了此处报告的问题:
bash: /bin/realbin/myapp: No such file or directory
这是因为该文件/bin/realbin/myapp
不存在。
答案2
您是否尝试过source
包含该函数的文件?
IE如果我在我的.bashrc
文件中添加 bash 函数(我喜欢它们的位置);在本例中,我需要source
包含文件,.bashrc
以便使它们在全球范围内可用。
注意: source
在启动时执行,所以我需要手动仅当我编辑函数时才调用它,以便更新源(代码)。