Скрипт 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