Скрипт bash не работает в nohup, но работает как автономный

У меня есть один сценарий оболочки, который использует файл конфигурации. Я добавил следующий код для использования файла конфигурации.

source abc.config

Когда я запускал этот скрипт вручную, он работал нормально. Тем не менее, когда я делаю этот сценарий оболочки в качестве фонового процесса, используя no hup, это дает мне следующую ошибку.

строка 19: источник: abc.config: файл не найден

Я отладил сценарий оболочки, используя

bash -x shell_script.sh

При отладке он принимает значения конфигурации правильно и работает скрипт оболочки.

Этот сценарий оболочки работал нормально несколько дней назад, но внезапно он начал выдавать подобные ошибки. Также тот же скрипт отлично работает в другой среде.

Для правильного запуска этого сценария оболочки мы должны указать полный путь к файлу конфигурации в исходной инструкции. Но это неверный путь, поскольку конфигурационный файл и сценарии оболочки находятся в одной папке, а для исходного синтаксиса мы должны указывать только имя конфигурационного файла.

Как я могу исправить эту проблему?

PS: В настоящее время я добавил путь к файлу конфигурации следующим образом

source ${path}/abc.config

Но я хочу получить файл конфигурации без пути к нему.

1 ответ

Вы можете попробовать "source ./abc.config" просто чтобы убедиться, что заглядывает в ту же папку.

- Или, в зависимости от сложности выполнения режима / среды--

перед поиском вы можете обнаружить папку, в которую запускается скрипт, сохранить ее в переменной и использовать в качестве префикса к вашему abc.config, например

DIRN=`dirname $0`
source $DIRN/abc.config
Другие вопросы по тегам