Абсолютный путь в сценариях bash

У меня есть сценарий оболочки myscript.sh который вызывает команду, скажем, mycmd . Когда я запускаю этот сценарий из терминала, например ./myscript.sh , все работает нормально.

Но когда я добавляю этот скрипт к crontab, вывод mycmd пуст. Когда я вызываю /usr/local/bin/mycmd внутри myscript.sh все работает отлично.

Итак, почему я должен использовать абсолютный путь к исполняемому файлу? Это потому, что это не в $PATH «cron-bash»?

One Solution collect form web for “Абсолютный путь в сценариях bash”

У вас это точно: окружение cron может иметь PATH , который не включает /usr/local/bin/ . Вы можете исправить это, добавив в свой скрипт этот каталог в PATH :

 PATH="$PATH:/usr/local/bin/" 

Однако наилучшей практикой является использование явных путей для всех внешних двоичных файлов, которые сценарий вызывает на всякий случай (например) вредоносную программу, которую удобно назвать cp попадает в PATH где-то перед /bin .

  • Как найти и запустить скрипт bash?
  • Как создать относительную символическую ссылку с учетом относительного пути?
  • проблемы с GNU tail -f и комбинацией команд
  • Шестнадцатеричная проверка последовательности чисел в Linux?
  • Перенос определенных файлов из нескольких каталогов
  • Как перезапустить мой сервер автоматически, используя crontab, если они спустились?
  • Шаблоны с тремя точками
  • Что задает переменную окружения $ SHELL?
  • Есть ли команда оболочки или утилита для вывода процесса кэширования?
  • Получение команды tree для отображения каталогов
  • Как интерактивно удалить все каталоги, соответствующие заданным критериям?
  • Linux и Unix - лучшая ОС в мире.