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

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

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

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

  • Как программно отключить пользователя ssh?
  • Почему этот сценарий оболочки терпит неудачу в bash, но команды работают в SSH?
  • Как запустить несколько процессов с помощью одной команды?
  • Как проверить, что dvd-rw стерта?
  • Почему «sudo su» в сценарии оболочки не запускает остальную часть скрипта как root?
  • расширение командной строки переименования команд
  • Почему tmux запускается медленнее и медленнее с течением времени?
  • Как запустить скрипт Python в Makefile
  • One Solution collect form web for “Абсолютный путь в сценариях bash”

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

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

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

    Linux и Unix - лучшая ОС в мире.