Что делать, если cp: command not found

admin

Иногда возникает простая проблема при создании тасок на шелле — скрипты работают, если запускать их вручную, но не работают, если они запускаются на кроне или в каком-то другом окружении. При этом мы видим такую ошибку:

./task.sh: line 10: cp: command not found

Это происходит из-за того, что в этом окружении есть другие настройки переменной $PATH. Эта переменная указывает путь поиска для обнаружения и выполнения команд без абсолютного пути.

Как подтвердить проблему

Разберем проблему на примере скрипта, который падает на выполнении команды cp. Давайте выполним простую команду, чтобы проверить значение этой переменной:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

А теперь узнаем, где находится команда cp:

whereis cp
cp: /bin/cp

Если запустить вывод переменной $PATH на кроне, то мы сможем подтвердить, что в ней нет папки, в которой находится команда cp.

Как решить проблему

Чтобы заставить скрипт работать на кроне, есть несколько способов. Самый простой — добавить к командам абсолютный путь внутри нашей таски:

cp file /dir # вот это фейлится
/bin/cp file /dir # вот это работает

Или переопределить переменную в начале скрипта:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Или сделать это в настройке кронтаба до вызова скрипта:

* * * * * PATH=$PATH:/usr/local/bin /path/to/script.sh

TL;DR

Если скрипты, которые запускались вручную, не запускаются на кроне или в другом окружении, скорее всего, проблема в переменной $PATH. Чтобы решить эту проблему, стоит или переопределять значение переменной, или указывать абсолютный путь к командам в теле скрипта.

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

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024