Командные пути как переменные в сценариях оболочки - PullRequest
4 голосов
/ 10 февраля 2010

Что лучше всего использовать при запуске внешних утилит в сценариях оболочки. Например, если я хочу запустить «gzip» в нескольких сценариях, чтобы убедиться, что используется конкретный двоичный файл gzip, должен ли я сделать полный путь к двоичному файлу переменной и просто использовать переменную в сценарии?

GZIP=/home/me/bin/gzip
$GZIP somefile
$GZIP anotherfile

Или лучше практиковать жесткий код пути для каждого вызова двоичного файла?

/home/me/bin/gzip somefile
/home/me/bin/gzip anotherfile

Или лучше установить и положиться на путь?

PATH=/home/me/bin:$PATH
gzip somefile
gzip anotherfile

Я не запускаю сценарии как root, поэтому удобство обслуживания и переносимости важнее, чем безопасность пользователя.

Ответы [ 2 ]

2 голосов
/ 10 февраля 2010

Я думаю, что первый вариант самый лучший. Вы найдете это или подобное:

SOMEPATH=/path/to/somewhere
EXEC_ONE=exec_foo
EXEC_TWO=exec_bar

$SOMEPATH/$EXEC_ONE --argument baz_file

во многих системных скриптах.

Вы можете использовать условные выражения для проверки существования и даже совместимости, доступных параметров и т. Д., А также для установки переменных соответственно.

2 голосов
/ 10 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...