linux - bash 脚本没有在 nohup 中运行,但可以独立运行

标签 linux bash shell config nohup

<分区>

我有一个使用配置文件的 shell 脚本。我添加了以下代码以使用配置文件。

source abc.config

当我手动运行这个 shell 脚本时,它工作正常。但是,当我使用 no hup 将此 shell 脚本作为后台进程时,它会出现以下错误。

line 19: source: abc.config: file not found

我使用

调试了 shell 脚本
bash -x shell_script.sh

在调试过程中,它正确地获取了配置值并且 shell 脚本工作正常。

这个shell脚本前几天还好好的,突然就报这样的错了。同样的脚本在另一个环境中运行良好。

要正确运行此 shell 脚本,我们必须在源语句中提供配置文件的完整路径。但这不是正确的方式,因为配置文件和 shell 脚本都在同一个文件夹中,对于源代码语法,我们必须只提供配置文件名。

我该如何解决这个问题?

P.S : 目前我添加的配置文件路径如下

source ${path}/abc.config

但我想获取一个没有路径的配置文件。

最佳答案

您可以尝试“source ./abc.config”以确保查看的是同一个文件夹。

--或者,取决于执行模式/环境的复杂程度--

在采购之前,您可能会检测到脚本正在运行的文件夹,将其存储到变量中并将其用作 abc.config 的前缀,例如

DIRN=`dirname $0`
source $DIRN/abc.config

关于linux - bash 脚本没有在 nohup 中运行,但可以独立运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40013867/

相关文章:

c - 是否可以检测程序是否已通过/proc/self/mem 动态链接?

bash - 如何对查找结果进行排序,以使以一组模式之一开头的路径排在最后

arrays - 比较两个排序的数组

Python fabric 如何为用户提示发送密码和是/否

bash - 在 bash shell 中的文件顶部添加一行新文本

Linux:使用精确的子字符串重命名文件

linux - 向仅接受文件的 bash 命令提供环境变量

linux - 将进程移至其他 TTY

linux - 尝试使用 awk 打印列,但说找不到打印

linux - 为什么重定向 + 管道 ( 2>&1 |) 合并两个流而不是将 stderr 移动到 stdout?