
Как выполнить команду, находящуюся в другом каталоге, так, чтобы команда думала, что я выполнил ее в текущем каталоге?
Если команда использует basename()
или argv[0]
(или как она там называется) для определения того, откуда она была вызвана, и ей требуются файлы в ее каталоге, она может искать в каталоге, из которого вы вызвали приложение, т. е. в неправильном каталоге.
Конечно, вы можете cd
сначала перейти в каталог и вызвать его там, но есть ли способ вызвать приложение так, чтобы оно думало, что вы запустили его из его каталога (без cd
предварительного запуска)?
Если это возможно, я буду использовать это в crontab
, так как сама мысль об использовании cd
там меня пугает.
решение1
Почему использование cd
в crontab вас пугает?
Обратите внимание, что если вы хотите просто временно сменить каталог, а затем вернуться обратно, вы можете использовать pushd
иpopd
решение2
Вы можете создать такой скрипт:
#!/bin/sh
cd /dir/
yourcommand
Затем сохраните его где-нибудь и добавьте этот скрипт в crontab.