Команда env

Thank you for reading this post, don't forget to subscribe!

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

 

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

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

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

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

 

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

 

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

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

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

 

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

 

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

 

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

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

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

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

Напри­мер:

 

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

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

 

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

 

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

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

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