从 bash 脚本调用应用程序 Ubuntu

从 bash 脚本调用应用程序 Ubuntu

我的 Ubuntu 机器上安装了一个特定的应用程序/usr/local/MYPROGRAM/bin/myapp,当我尝试myfn在 bash 脚本中使用它时mybashscript.sh,它会给出一个错误,指出myfn未找到该命令,但如果我myfn从普通终端窗口调用它,它工作正常,因为它是在文件中找到,所以我想知道如何从 bash 脚本中~/.bashrc调用?myfnmybashscript.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在启动时执行,所以我需要手动仅当我编辑函数时才调用它,以便更新源(代码)。

相关内容