Как изменить каталог, в котором, по мнению команды, она выполняется?

Как изменить каталог, в котором, по мнению команды, она выполняется?

Как выполнить команду, находящуюся в другом каталоге, так, чтобы команда думала, что я выполнил ее в текущем каталоге?

Если команда использует basename()или argv[0](или как она там называется) для определения того, откуда она была вызвана, и ей требуются файлы в ее каталоге, она может искать в каталоге, из которого вы вызвали приложение, т. е. в неправильном каталоге.

Конечно, вы можете cdсначала перейти в каталог и вызвать его там, но есть ли способ вызвать приложение так, чтобы оно думало, что вы запустили его из его каталога (без cdпредварительного запуска)?

Если это возможно, я буду использовать это в crontab, так как сама мысль об использовании cdтам меня пугает.

решение1

Почему использование cdв crontab вас пугает?

Обратите внимание, что если вы хотите просто временно сменить каталог, а затем вернуться обратно, вы можете использовать pushdиpopd

решение2

Вы можете создать такой скрипт:

#!/bin/sh
cd /dir/
yourcommand

Затем сохраните его где-нибудь и добавьте этот скрипт в crontab.

Связанный контент