Я сталкивался со многими сценариями оболочки с переменными во всех заглавных буквах, и я всегда думал, что с этим есть серьезное недоразумение. Насколько я понимаю, условно (и, возможно, по необходимости давно) переменные среды указаны в верхнем регистре.
Но в современных средах написания сценариев, таких как Bash, я всегда предпочитал использовать строчные имена для временных переменных, а заглавные только для экспортированных (то есть окружающих) переменных . Например:
#!/usr/bin/env bash
year=`date +%Y`
echo "It is $year."
export JAVA_HOME="$HOME/java"
Это всегда был мой взгляд на вещи. Существуют ли авторитетные источники, которые либо соглашаются, либо не соглашаются с этим подходом, или это просто вопрос стиля?
источник
USER="username"
в скрипте bash автоматизации некоторых удаленных команд через ssh вместоuser="username"
. Тьфу! Рад, что знаю сейчас!Любые соглашения о присвоении имен, соблюдаемые последовательно, всегда помогут. Вот несколько полезных советов для именования переменных оболочки:
Используйте все заглавные буквы и подчеркивания для экспортированных переменных и констант, особенно когда они используются несколькими сценариями или процессами. Используйте общий префикс, когда это применимо, чтобы связанные переменные выделялись и не конфликтовали с внутренними переменными Bash, которые все в верхнем регистре.
Примеры:
JOB_HOME
JOB_LOG
JOB_TEMP
JOB_RUN_CONTROL
LOG_DEBUG
LOG_INFO
LOG_ERROR
STATUS_OK
STATUS_ERROR
STATUS_WARNING
Используйте «случай змеи» ( все строчные и подчеркивания ) для всех переменных, которые ограничены одним скриптом или блоком.
Примеры:
input_file
first_value
max_amount
num_errors
Используйте смешанный случай, когда локальная переменная имеет некоторую связь с переменной окружения, например:
old_IFS
old_HOME
Использовать начальное подчеркивание для «частных» переменных и функций. Это особенно актуально, если вы когда-либо пишете библиотеку оболочки, где функции внутри файла библиотеки или между файлами должны совместно использовать переменные, никогда не конфликтуя с чем-либо, что может быть названо аналогичным образом в основном коде.
Примеры:
_debug
_debug_level
_current_log_file
Избегайте случая верблюда . Это минимизирует ошибки, вызванные опечатками. Помните, что переменные оболочки чувствительны к регистру .
Примеры:
inputArray
thisLooksBAD
,numRecordsProcessed
,veryInconsistent_style
Смотрите также:
источник
Если переменные оболочки будут экспортированы в среду, стоит учесть, что в определении переменной среды POSIX (выпуск 7, выпуск 2018) указано:
...
источник
Я делаю то, что ты делаешь. Я сомневаюсь, что есть авторитетный источник, но де-факто это довольно распространенный стандарт.
источник
cat /tmp/location.txt
На самом деле, термин «переменные среды», кажется, имеет довольно недавнюю чеканку. Керниган и Пайк в своей классической книге «Среда программирования UNIX», опубликованной в 1984 году, говорят только о «переменных оболочки» - в индексе даже нет записи о «среде»!
источник
Это просто очень широко распространенное соглашение, я сомневаюсь, что есть какой-либо «авторитетный» источник для него.
источник
Я склонен использовать ALL_CAPS как для окружающей среды, так и для глобальных переменных. Конечно, в Bash нет реальной области видимости переменных, поэтому есть большая часть переменных, используемых в качестве глобальных переменных (в основном это настройки и отслеживание состояния), и относительно немного «локальных» (счетчики, итераторы, частично построенные строки и временные переменные)
источник