Рейтинг:0

как прочитать переменную среды, объявленную в /etc/environment, из bash?

флаг mx

Как я читать или получить доступ к ТРАВЕРС переменная среды ниже?

николас@гондор:~$ 
николас@гондор:~$ printenv | grep ПУТЬ
ПУТЬ ОКОН = 2
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
николас@гондор:~$ 
николас@гондор:~$ printenv | grep ТРАВЕРС
николас@гондор:~$ 
николас@гондор:~$ кошка /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"



TRAVERSE="/home/nicholas/some_directory"
николас@гондор:~$ 

я побежал источник ~/.bashrc без результата. Я ожидаю, что если бы я перезагрузился, переменная была бы доступна для чтения, но это кажется экстремальным.

смотрите также:

https://stackoverflow.com/q/39296472/4531180

Gunnar Hjalmarsson avatar
флаг uz
Вы повторно вошли в систему после добавления переменной TRAVERSE в `/etc/environment`?
Nicholas Saunders avatar
флаг mx
нет, я пытался этого избежать. Я планирую немного повозиться с некоторыми варами. это единственный способ @GunnarHjalmarsson перезагрузить или обновить переменные?
Gunnar Hjalmarsson avatar
флаг uz
Я бы сказал, что это "правильный" путь. Но вы можете просто выполнить `source /etc/environment`, который обновит текущий процесс bash вашими последними изменениями. Таким образом, новые переменные не будут экспортироваться в среду, а будут доступны только как переменные оболочки.
raj avatar
флаг cn
raj
По определению, `/etc/environment` читается при входе в систему, в процессе входа в систему, до запуска оболочки или графического интерфейса и только в это время. Таким образом, повторный вход в систему — правильный способ применить изменения в этом файле.
muru avatar
флаг us
Полный синтаксис `/etc/environment` сильно отличается от синтаксиса сценариев оболочки, поэтому, хотя ваш конкретный файл может быть источником, не все действительные файлы среды могут быть такими.
muru avatar
флаг us
Если вам просто нужно это для вашей текущей оболочки, почему бы просто не установить и не экспортировать переменную самостоятельно?
Gunnar Hjalmarsson avatar
флаг uz
@muru: Возможно, вы перепутали его с синтаксисом `~/.pam_environment`.
Рейтинг:1
флаг cn

Если вы используете оболочку bash

. /и т.д./окружающая среда

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

Например:

$ кошка б.ш
TRAVERSE="Еще кое-что"
$ эхо $ ТРАВЕРС

$ ./б.ш
$ эхо $ ТРАВЕРС

$ . ./б.ш
$ эхо $ ТРАВЕРС
Еще кое-что
$ 
SEWTGIYWTKHNTDS avatar
флаг cn
Однако `source /etc/environment` должен работать
Nicholas Saunders avatar
флаг mx
да, `source /etc/environment` работает. спасибо, это было немного поздно ночью.

Ответить или комментировать

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