Программа env что это

Содержание

В чём смысл и преимущества #!/usr/bin/env?

Этак с начала времён (юниксовых, т.е. 1.01.1970) в начале скрипта рекомендовалось использовать shebang / hashbang — строку, указывающую на используемый интерпретатор, например:

#!/bin/bash echo ‘hello world’ #!/usr/bin/python print ‘hello world’ #!/usr/bin/python3 print(‘hello world’)
Недавно наткнулся на рекомендацию использовать вместо этого такую форму:
#!/usr/bin/env bash echo ‘hello world’ #!/usr/bin/env python print ‘hello world’ #!/usr/bin/env python3 print(‘hello world’)

Пожалуйста, объясните, как это работает и в чём преимущества такого подхода? Если есть ограничения и/или недостатки по сравнению с обычным способом — то и о них хотелось бы услышать.

Отслеживать
Nick Volynkin
задан 5 июл 2016 в 8:16
Nick Volynkin ♦ Nick Volynkin
33.1k 24 24 золотых знака 125 125 серебряных знаков 214 214 бронзовых знаков
Кросс-линк на StackExchange: unix.stackexchange.com/questions/29608/…

5 июл 2016 в 8:43

Простейший пример из практики: в Linux bash лежит в /bin/bash , а во FreeBSD в /usr/local/bin/bash и первый вариант не запустится. В своё время напоролся на это и теперь везде использую только второй вариант)

Основы Express.js — 6. Файлы конфигурации (.env, nconf и кастомный)

5 июл 2016 в 9:18
Правда, меня иногда беспокоит, а вдруг /usr/bin/env когда-нибудь кто-нибудь тоже переместит.
5 июл 2016 в 9:18
ассоциация: stackoverflow.com/questions/2429511
27 фев 2017 в 18:21
ассоциация: stackoverflow.com/questions/10376206
27 фев 2017 в 18:21

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

Основная идея — улучшение переносимости. Не гарантируется, что на различных системах исполняемый файл будет лежать по пути, который указан в shebang.

Использование env позволяет снизить этот риск за счет запуска команды на основе данных из переменной среды PATH

Более того, если по каким-либо причинам вместо стандартного исполняемого файла пользователь хочет использовать свой, то ему достаточно добавить путь к этому файлу в PATH без необходимости исправления скриптов:

В примере выше я скопировал bash к себе в домашнюю директорию (переименовав при этом файл в python), добавил путь в PATH и запустил python с помощью env , которая усужливо запустила bash , т.к. нашла его раньше.

Еще одним примером является использование виртуальных окружений при разработке на Python (virtualenv). Поскольку они также перебивают PATH , env позволяет использовать нужную версию исполняемого файла:

~ $ workon black-box-challenge-2016-py2 ~ (venv:black-box-challenge-2016-py2) $ env python Python 2.7.11 (default, Mar 31 2016, 06:18:34) [GCC 5.3.0] on linux2 Type «help», «copyright», «credits» or «license» for more information. >>> import sys >>> print sys.executable /home/soon/.virtualenvs/black-box-challenge-2016-py2/bin/python >>>

Источник: ru.stackoverflow.com

Environment Variables (Переменные среды) — Часть-1 — что это такое и много лишнего трепа

Программа env что это

Команда env позволяет модифицировать список переменных окружения перед исполнением пользовательской команды. В некоторых командных оболочках она является встроенной, в некоторых — внешней командой.

Базовый синтаксис команды выглядит следующим образом:

$ env [параметры] [ИМЯ=ЗНАЧЕНИЕ] . [команда]

При вызове env без каких-либо параметров будет выведен список всех переменных окружения. В качестве команды может использоваться произвольная команда с любыми аргументами или без аргументов, для корректного исполнения которой требуется изменение значений переменных окружения. Наиболее часто используемыми параметрами являются параметр -i, позволяющий игнорировать все системные переменные окружения и параметр -u, после которого должно идти имя переменной окружения, которую нужно игнорировать.

Наиболее часто используемыми переменными окружения являются переменные со следующими именами:

Имя переменной Значение переменной
USERNAME Имя текущего пользователя
HOME Путь к домашней директории текущего пользователя
SHELL Путь к бинарному файлу командной оболочки текущего пользователя
EDITOR Путь к бинарному файлу стандартного текстового редактора с интерфейсом командной строки
PATH Список директорий для поиска бинарных файлов
HOSTNAME Имя компьютера
LANG Имя выбранной локализации, начинающееся с LC_
PS1 Параметры приветствия командной оболочки
DISPLAY Имя дисплея оконной системы Xorg
TZ Обозначение системного часового пояса

Обозначение системного часового пояса

Рассматриваемая команда особенно полезна для написания переносимых сценариев командной оболочки, так как она позволяет полностью отказаться от сохранения полного пути к бинарному файлу интерпретатора сценариев после последовательности шебанг (!#). Это полезная практика, так как в одной системе бинарный файл интерпретатора может располагаться в директории /usr/bin, в другой — в директории /usr/local/bin, а в третьей — вообще в директории /opt. Известно, что после последовательности шебанг должен располагаться полный путь к бинарному файлу интерпретатора, но вы также можете разместить после нее полный путь к бинарному файлу утилиты env, которая будет использоваться для получения пути к бинарному файлу интерпретатора. Исходя из этого, вы можете использовать в качестве аргумента рассматриваемой утилиты лишь имя бинарного файла нужного интерпретатора, например, bash:

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

Примеры использования

Вывод значений всех переменных окружения

Для ознакомления со всеми значениями переменных окружения достаточно выполнить команду env без каких-либо аргументов:

$ env
XDG_MENU_PREFIX=gnome-
LANG=ru_RU.UTF-8
GDM_LANG=ru_RU.UTF-8
.

Исполнение команды с измененными значениями переменных окружения

Для изменения значения произвольной переменной окружения перед запуском команды достаточно указать имя этой переменной и ее значение после символа равенства. Например, для вывода времени по Гринвичу достаточно изменить значение переменной окружения TZ:

$ env TZ=GMT date
Ср июл 26 17:50:30 GMT 2017

Исполнение команды лишь с заданными переменными окружения

Для исполнения команды с несколькими пользовательскими переменными окружения следует воспользоваться параметром -i и вручную задать значения необходимых переменных:

$ env -i PWD=/root env
PWD=/root

Источник: linux-faq.ru

Как установить и перечислить переменные среды в Linux

Как установить и перечислить переменные среды в Linux

В системах на основе Linux и Unix переменные среды представляют собой набор динамических именованных значений, которые хранятся в системе и используются приложениями, запускаемыми в оболочках или подоболочках. Проще говоря, переменная окружения — это переменная с именем и связанным значением.

Читайте также:
Виджеты galaxy essentials что это за программа и нужна ли она

Переменные среды позволяют настроить работу системы и поведение приложений в системе. Например, переменная окружения может хранить информацию о текстовом редакторе или браузере по умолчанию , пути к исполняемым файлам или настройке локали системы и раскладки клавиатуры.

Переменные среды и переменные оболочки

Переменные имеют следующий формат:

KEY=value KEY=»Some other value» KEY=value1:value2

  • Имена переменных чувствительны к регистру. По соглашению переменные среды должны иметь имена UPPER CASE.
  • При назначении нескольких значений переменной они должны быть разделены : символом двоеточия .
  • Вокруг = символа равенства нет места .

Переменные можно классифицировать на две основные категории: переменные среды и переменные оболочки.

Переменные среды — это переменные, которые доступны для всей системы и наследуются всеми порожденными дочерними процессами и оболочками.

Переменные оболочки — это переменные, которые применяются только к текущему экземпляру оболочки. Каждая оболочка, такая как zsh и bash , имеет свой собственный набор внутренних переменных оболочки.

Есть несколько доступных команд, которые позволяют вам перечислять и устанавливать переменные среды в Linux:

  • env — Команда позволяет запускать другую программу в пользовательской среде без изменения текущей. При использовании без аргумента он напечатает список текущих переменных среды.
  • printenv — Команда печатает все или указанные переменные среды.
  • set — Команда устанавливает или отменяет переменные оболочки. При использовании без аргумента он напечатает список всех переменных, включая переменные окружения и оболочки, а также функции оболочки.
  • unset — Команда удаляет переменные оболочки и среды.
  • export — Команда устанавливает переменные среды.

Переменные среды списка

Наиболее используемой командой для отображения переменных среды является printenv . Если имя переменной передается в качестве аргумента команды, отображается только значение этой переменной. Если аргумент не указан, printenv печатается список всех переменных среды, по одной переменной на строку.

Например, чтобы отобразить значение HOME переменной среды, вы должны выполнить:

printenv HOME

Вывод выведет путь текущего пользователя, вошедшего в систему:

/home/linuxize

Вы также можете передать в printenv команду более одного аргумента:

printenv LANG PWD
en_US /home/linuxize

Если вы запустите команду printenv or env без аргументов, она покажет список всех переменных среды:

printenv

Вывод будет выглядеть примерно так:

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;. LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US S_COLORS=auto XDG_SESSION_ID=5 USER=linuxize PWD=/home/linuxize HOME=/home/linuxize SSH_CLIENT=192.168.121.1 34422 22 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/linuxize TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LANGUAGE=en_US: LOGNAME=linuxize XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LESSOPEN=| /usr/bin/lesspipe %s _=/usr/bin/printenv

Ниже приведены некоторые из наиболее распространенных переменных среды:

  • USER — текущий вошедший в систему пользователь.
  • HOME — Домашний каталог текущего пользователя.
  • EDITOR — Используемый по умолчанию редактор файлов. Это редактор, который будет использоваться при вводе edit в вашем терминале.
  • SHELL — Путь к оболочке текущего пользователя, например, bash или zsh.
  • LOGNAME — имя текущего пользователя.
  • PATH — Список каталогов для поиска при выполнении команд. Когда вы запускаете команду, система будет искать эти каталоги в указанном порядке и использовать первый найденный исполняемый файл.
  • LANG — текущие настройки локалей.
  • TERM — Текущая эмуляция терминала.
  • MAIL — Место хранения почты текущего пользователя.

printenv И env команды печатают только переменные окружения. Если вы хотите получить список всех переменных, включая окружение, оболочку и переменные, а также функции оболочки, вы можете использовать set команду:

BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=()

Команда отобразит большой список всех переменных, так что вы, вероятно, захотите передать вывод в less команду.

set | less

Вы также можете использовать команду echo для печати переменной оболочки. Например, чтобы напечатать значение BASH_VERSION переменной, которую вы запустите:

echo $BASH_VERSION
4.4.19(1)-release

Установка переменных среды

Чтобы лучше проиллюстрировать разницу между переменными Shell и Environment, мы начнем с установки переменных Shell, а затем перейдем к переменным Environment.

Чтобы создать новую переменную оболочки с именем MY_VAR и значением, Linuxize просто введите:

MY_VAR=’Linuxize’

Вы можете проверить, что переменная установлена, используя любой echo $MY_VAR из фильтров вывода команды set с помощью grep set | grep MY_VAR :

echo $MY_VAR
Linuxize

Используйте printenv команду, чтобы проверить, является ли эта переменная переменной среды:

printenv MY_VAR

Вывод будет пустым, что говорит о том, что переменная не является переменной окружения.

Вы также можете попробовать напечатать переменную в под-оболочке, и вы получите пустой вывод.

bash -c ‘echo $MY_VAR’

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

Чтобы создать переменную среды, просто экспортируйте переменную оболочки как переменную среды:

export MY_VAR

Вы можете проверить это, запустив:

printenv MY_VAR
Linuxize

Если вы попытаетесь напечатать переменную в подоболочке на этот раз, вы получите имя переменной, напечатанное на вашем терминале:

bash -c ‘echo $MY_VAR’
Linuxize

Вы также можете установить переменные среды в одну строку:

export MY_NEW_VAR=»My New Var»

Переменные среды, созданные таким образом, доступны только в текущем сеансе. Если вы откроете новую оболочку или выйдете из системы, все переменные будут потеряны.

Постоянные переменные среды

Чтобы сделать переменные окружения постоянными, вам нужно определить эти переменные в файлах конфигурации bash. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:

    /etc/environment — Используйте этот файл для настройки общесистемных переменных среды. Переменные в этом файле задаются в следующем формате:

FOO=bar VAR_TEST=»Test Var»
export JAVA_HOME=»/path/to/java/home» export PATH=$PATH:$JAVA_HOME/bin
export PATH=»$HOME/bin:$PATH»

Чтобы загрузить новые переменные среды в текущий сеанс оболочки, используйте source команду:

source ~/.bashrc

Вывод

В этом руководстве мы показали, как устанавливать и перечислять переменные среды и оболочки.

Источник: baks.dev

Учебное пособие по команде env в Linux для начинающих (5 примеров)

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Учебное пособие по команде env в Linux для начинающих (5 примеров)

(2 оценок, среднее: 3,00 из 5)
12 августа 2017

Учебное пособие по команде env в Linux для начинающих (5 примеров)

Е сли ваша работа предполагает делать вещи с помощью командной строки в Linux, то скорее всего, вы будете использовать оболочку Bash. Знаете ли вы, что есть среда, связанная с процессами, которые выполняются через оболочку? И, если вы хотите, вы можете настроить эту среду, специально для выполнения этой задачи. В этой статье мы рассмотрим утилиту командной строки env, она не только позволяет получить доступ к среде оболочки, но и позволяет вносить изменения в ней, как в случае необходимости.

Но прежде чем мы это сделаем, стоит отметить, что все команды и инструкции, упомянутые в данном руководстве, были протестированы на оболочке Bash, работающие на Ubuntu 16.04 LTS.

Команда env в Linux

По определению, команда env позволяет запускать программу в измененной среде. Ниже приведен синтаксис команды, как уже упоминалось на странице man:

env [OPTION]. [-] [NAME=VALUE]. [COMMAND [ARG]. ]

И вот что страница man говорит о env:

Читайте также:
Zlorigin что это за программа

Set each NAME to VALUE in the environment and run COMMAND.

Примеры должны дать вам лучшее представление о том, как эта команда работает:

Q1. Как получить доступ ко всем переменным окружения, используя команду env?

Bash среда, как вы уже знаете, состоит из записей VARNAME = VALUE. Чтобы получить доступ ко всем переменным окружения, а также значения, связанные с ними, выполните команду env без опции.

Вот вывод из приведенных выше команд в нашем случае:

Q2. Как временно изменить окружающую среду с помощью env?

Ключевая особенность env предлагает возможность временно изменить условия для процесса. Например, мы создали небольшой исполняемый процесс который отображает значение переменной окружения USER при выполнении.

Вот вывод в обычном сценарии:

Теперь, то что мы сделали, мы использовали команду ENV временно изменить значение переменной окружения USER c «destroyer» на «HTF» для исполняемого процесса. Ниже приводится команда, которую мы использовали в этом случае:

env USER=HTF ./env

А вот выход производится в этом случае:

Таким образом, вы можете увидеть, что исполняемый файл возвращается новое значение.

Примечание:

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

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

Если вы хотите, вы можете также сделать, чтобы процесс игнорировал существующую/унаследованную среду, и начать с пустой вместо этого. Это может быть сделано с помощью вариант -i или –ignore-environment.

Q4. Как сделать при помощи команды env использовать NUL вместо символа новой строки при выходе?

В первом примере выше, был вывод строк, полученные с помощью команды env разделяются символом новой строки. Тем не менее, если вы хотите, вы можете сделать env использовать символ NUL как разделитель. Эта функция может быть доступна с помощью опции –null в командной строке.

env —null

Ниже приведен пример экрана:

Q5. Как узнать ошибку, основываясь на состоянии команды вывода env?

Команда env производит следующие коды вывода: 0, 125, 126 и 127. Ниже приведены описания ошибок, связанных с ними:

0 if no COMMAND is specified and the environment is output 125 if ‘env’ itself fails 126 if COMMAND is found but cannot be invoked 127 if COMMAND cannot be found

В этом случае, если вы получите код ошибки, кроме упомянутых выше, то это состояние вывода возвращается в процессе/команде, которая была выполнена в модифицированной среде.

Вывод

Если вы полный новичок командной строки, есть вероятность, что вы не будете требовать этого инструмента на ежедневной основе. Тем не менее, это не значит, что не стоит знать – на самом деле, env помогает во многих ситуациях. Примеры, которыми мы поделились в этой статье достаточно, чтобы дать вам понимание команды. Для получения дополнительной информации, используйте страницу man, или лучше, выполните следующую команду:

info coreutils env invocation

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник: andreyex.ru

Использование переменных окружения в Node.js

Материал, посвящённый переменным окружения в Node.js, перевод которого мы сегодня публикуем, написал Берк Холланд, веб-разработчик, в сферу интересов которого входят JavaScript, Node.js и VS Code. Кроме того, стоит отметить, что у него сложились непростые отношения с Java. Вот его история.

Переменные окружения — одна из фундаментальных конструкций среды Node.js, но почему-то я никогда не стремился научиться правильно ими пользоваться. Возможно, случилось так из-за их названия — «Environment Variables». Это название вызывало у меня нечто вроде посттравматического синдрома, неприятные воспоминания о том, как я пытался добавить путь к домашней директории Java в Windows.

Я тогда толком не мог понять, надо ли добавлять этот путь в переменную PATH, в переменную JAVA_HOME, или и туда и туда. Было неясно и то, нужно ли, чтобы в конце этого пути стояла точка с запятой. Собственно говоря, тогда у меня возникал и вопрос о том, почему я использую Java. Как бы там ни было, я наконец нашёл в себе силы и приступил к знакомству с переменными окружения Node.

Если вы пишете для платформы Node.js, и, так же, как и я, неважно — по каким причинам, до сих пор не особенно хорошо знакомы с переменными окружения — предлагаю это исправить.

Переменные окружения в Node.js

В Node переменные окружения могут быть глобальными (как в Windows), но часто они используются в применении к конкретному процессу, в выполнении которого заинтересован разработчик. Например, если у вас имеется веб-приложение, это значит, что в нём могут применяться следующие переменные окружения:

  • HTTP-порт, который будет прослушивать это приложение.
  • Строка подключения к базе данных.
  • Путь к JAVA_HOME, ох, подождите, это мимо. Прошу учесть, что выздоровление требует времени.

Если раньше вы программировали для .NET, возможно, вы знакомы с чем-то вроде файла web.config . Переменные окружения Node играют практически такую же роль, как настройки из web.config — они представляют собой механизм передачи в приложение информации, которую разработчик не хочет жёстко задавать в коде.

Кстати, на тему «hard code» — задания в коде неких значений вместо получений их из внешних источников, хочу поделиться моим собственным твитом.

Цитирую сам себя на пике помешательства

Как же использовать переменные окружения в Node.js-приложениях? Мне пришлось изрядно потрудиться для того, чтобы найти хороший материал по переменным окружения в Node, с непременным условием наличия в этом материале достаточного количества шуток о Java. Такого материала я не нашёл, поэтому решил написать его сам.

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

Указание переменных окружения в терминале

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

PORT=65534 node bin/www

Кстати, интересная вещь. Оказывается, самое большое значение, которое может принимать номер порта, это 65535. Как я это узнал? Конечно, нашёл на StackOverflow. Как вообще кто-либо что-либо узнаёт? Но в Node самый большой номер порта — это 65534.

Почему? Понятия не имею. Я не могу знать абсолютно всё.

Итак, для использования переменной окружения в коде нужно воспользоваться объектом process.env . Выглядит это так:

var port = process.env.PORT;

Однако использование описанного здесь подхода может плохо кончиться. Если у вас есть, например, строка подключения к базе данных, вы, вероятно, не будете особенно рады перспективам её ввода в терминал. На самом деле, ввод длинных значений в терминале похож на болезненную зависимость, а нам это совершенно ни к чему. Посмотрите сами:

Такой подход не масштабируется, а все хотят масштабирования. По мнению каждого архитектора, рядом с которым мне доводилось сидеть на разных мероприятиях, «масштабирование» — это даже важнее, чем сам факт работоспособности приложения.

Читайте также:
Что за программа mts

Поэтому рассмотрим другой подход, который заключается в применении файлов .env .

Использование файлов .env

Файлы .env предназначены для хранения переменных окружения. Для использования этой технологии достаточно создать в проекте файл с именем .env и внести в него переменные окружения, начиная каждую с новой строки:

Читать эти значения можно разными способами. Пожалуй, проще всего — с помощью пакета dotenv из npm :

npm install dotenv —save

После установки пакета его нужно подключить к проекту, а затем им можно пользоваться для работы с переменными окружения. Этот пакет найдёт файл .env и загрузит переменные, описанные в нём, в Node. Вот как это выглядит:

//Использование пакета dotenv для чтения переменных из файла .env в Node require(‘dotenv’).config(); var MongoClient = require(‘mongodb’).MongoClient; // Обращение к переменным из .env, которые теперь доступны в process.env MongoClient.connect(process.env.DB_CONN, function(err, db) < if(!err) < console.log(«We are connected»); >>);

Кстати, хочу поделиться важным советом. Не заливайте файлы .env на GitHub. В них находятся сведения, не предназначенные для чужих глаз. Не повторяйте моих ошибок.

Итак, пока всё хорошо, но то, о чём мы тут говорили, не очень-то удобно. Подключать dotenv придётся в каждом файле, где надо использовать переменные окружения, и dotenv придётся использовать в продакшне, когда, в сущности, вам это не нужно. Я не отношусь к фанатам развёртывания бесполезного кода в продакшне, хотя, мне кажется, до сих пор я только этим и занимался.

Что же делать? К счастью, вы пользуетесь VS Code (я абсолютно в этом уверен), а это значит, что у вас есть ещё несколько вариантов.

Работа с файлами .env в VS Code

Для начала вы можете установить расширение DotENV для VS Code, которое даст приятную подсветку синтаксиса файлов .env .

Вот как выглядит файл .env без подсветки синтаксиса и с подсветкой

Кроме того, отладчик VS Code, если вы им пользуетесь, предлагает некоторые более удобные возможности по загрузке значений из файлов .env .

Конфигурация запуска VS Code

Отладчик Node.js для VS Code (он устанавливается по умолчанию) поддерживает загрузку файлов .env посредством конфигураций запуска. Подробности о конфигурациях запуска можно почитать здесь.

Создание базовой конфигурации запуска для Node

После того, как вы создадите базовую конфигурацию запуска для Node (щёлкните по значку с шестерёнкой и выберите Node), можно выполнить одно из следующих действий, или сделать и то и другое.

Первый вариант заключается во включении переменных в конфигурационный файл.

Переменные в конфигурационном файле

Это — вполне приемлемый вариант, но меня немного беспокоит то, что каждое значение должно быть строкой. Всё-таки некоторые значения — это числа, а не строки, а в JavaScript есть лишь, скажем так, три основных типа данных, и мне не хотелось бы лишаться одного из них.

Передать переменные окружения в VS Code можно и более простым способом. Мы уже выяснили, что файлы .env — это наши друзья, поэтому вместо того, чтобы вписывать в конфигурационный файл значения переменных, просто укажем там путь к файлу .env .

Путь к файлу .env в конфигурационном файле

До тех пор, пока мы запускаем процесс Node.js из VS Code, файл с переменными окружения будет передаваться этому процессу. При этом нам не придётся втискивать числа в кавычки, делая из них строки, и не придётся разворачивать ненужный код в продакшне. Ну, по крайней мере, вам этого делать не придётся.

Запуск node-скриптов через NPM

Возможно, вы дошли до этого места и подумали о том, что никогда не запускаете Node-проекты командами вида node … , всегда пользуясь npm-скриптами вроде npm start . Конфигурациями запуска VS Code можно пользоваться и в этом случае. Однако, вместо применения стандартного запуска Node, можно настроить задачу Launch Via NPM.

Задача Launch Via NPM

После этого можно настроить значение параметра envFile , указав путь к файлу .env , и параметра runtimeArgs для запуска нужного скрипта. Обычно в качестве скрипта выступает start или debug .

Настройка запуска проекта с помощью npm

Обратите внимание на то, что в package.json нужно добавить, к npm-скрипту, флаг —inspect для того, чтобы VS Code мог подключить к процессу отладчик. В противном случае, хотя задача и запустится, отладчик не сможет сделать ничего полезного.

Флаг —inspect в package.json

Переменные окружения в продакшне

Итак, мы разобрались с тем, как пользоваться переменными окружения в ходе разработки. Вы, вероятнее всего, не будете применять файлы .env в продакшне, да и конфигурация запуска VS Code на сервере особой пользы не принесёт.

В продакшне определение переменных окружения будет зависеть от особенностей используемой платформы. Например, в случае с Azure есть три способа объявления таких переменных и управления ими.

Первый способ заключается в использовании Azure CLI.

az webapp config appsettings set -g MyResourceGroup -n MyApp —settings PORT=65534

Это работает, но выглядит не очень. Ещё один способ — использование веб-портала Azure. Я не часто пользуюсь веб-порталом, но когда это случается, я обращаюсь к нему именно для установки переменных окружения.

Здесь то, что мы называем «переменными окружения», называется «Application Settings».

Настройка переменных окружения в Azure

Ещё один вариант, учитывая то, что вы пользуетесь VS Code, заключается в установке расширения App Service и в настройке вышеописанных Application Settings прямо из редактора.

Настройка переменных окружения из VS Code

Мне нравится делать в VS Code абсолютно всё, и если бы там можно было бы писать электронные письма, я бы так и поступал. Кстати, похоже, моя мечта сбылась.

Итоги

Теперь вы знаете то же, что знаю я (не так много, позволю заметить), и я чувствую, что выполнил свою цель по шуткам на тему Java. Если вдруг их тут недостаточно — вот ещё одна, автор которой неизвестен: «Java — это очень мощный инструмент по превращению XML в стек-трейсы».

Надеемся, этот материал дал возможность восполнить пробелы в знаниях о переменных окружения в Node тем, кто раньше ими не пользовался, а тем, кто уже о них знал, позволил узнать что-нибудь новое о файлах .env, о применении переменных окружения на боевых серверах, и о том, как облегчить себе жизнь, занимаясь разработкой Node-проектов в VS Code. Если тема переменных окружения Node вам интересна — вот одна из наших предыдущих публикаций на эту тему, посвящённая особенностям работы с process.env.

Уважаемые читатели! Как вы решаете проблемы использования переменных окружения Node в ходе разработки и в продакшне?

  • JavaScript
  • разработка
  • Node.js
  • переменные окружения

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru