Командные пути как переменные в сценариях оболочки

Как лучше всего запускать внешние утилиты в сценариях оболочки. Например, если я хочу запустить «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, поэтому удобство обслуживания и переносимости важнее, чем безопасность пользователя.

4 голоса | спросил Steve 10 FebruaryEurope/MoscowbWed, 10 Feb 2010 20:23:29 +0300000000pmWed, 10 Feb 2010 20:23:29 +030010 2010, 20:23:29

2 ответа


0

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

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

$SOMEPATH/$EXEC_ONE --argument baz_file

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

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

ответил Dennis Williamson 10 FebruaryEurope/MoscowbWed, 10 Feb 2010 23:15:25 +0300000000pmWed, 10 Feb 2010 23:15:25 +030010 2010, 23:15:25
0

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

ответил Matthew Flaschen 10 FebruaryEurope/MoscowbWed, 10 Feb 2010 20:25:57 +0300000000pmWed, 10 Feb 2010 20:25:57 +030010 2010, 20:25:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132