Всем привет,
Я думаю, было бы здорово, если бы вы могли изменить переменные среды (например, доступ к $ env: Name или Get-ChildItem env :) в Linux.
Например, чтобы установить там значения новый файл конфигурации в / etc ?
В Windows я могу изменить, например, PSModulePath и добавить собственный путь. Единственный вариант в Linux - создать файл профиля ps1 для всех пользователей.
Спасибо.
Могу ли я предложить вам изменить название проблемы, чтобы отразить тот факт, что вы ищете PowerShell, чтобы ввести _профильно-независимый_ способ _постоянного_ определения переменных среды?
Несколько мыслей:
Переменные среды по определению _shell / application-agnostic_ и видны _все_ дочерним процессам, независимо от того, какая оболочка / приложение их создала.
PowerShell "слушает" только _2_ переменные среды, одна из которых - $env:PSModulePath
.
Насколько я понимаю, в средах Linux (во всех?) Уже есть файл /etc/environment
в качестве общесистемного, независимого от оболочки механизма для определения переменных среды.
Тем не менее, если набор переменных среды действительно используется только _PowerShell_, то общесистемный профиль _PowerShell_ - $profile.AllUsersAllHosts
- возможно, _является правильным местом для их определения.
/etc/profile
, которые, как ожидается, будет обрабатывать оболочка по умолчанию, что (a) не действует для приложений с графическим интерфейсом пользователя, и (b) требует, чтобы оболочка по умолчанию выполняла это ожидание, и (c) требует, чтобы оболочка по умолчанию для понимания синтаксиса оболочки POSIX (которая PowerShell, если бы она была определена как оболочка по умолчанию, не была бы [_Update_: /etc/profile
и ~/.profile
теперь _аретится_, если вы начнете с pwsh -l
или используйте PowerShell в качестве оболочки по умолчанию]).Я попытался установить такую переменную среды на машине Ubuntu:
Я надеялся, что это отредактирует файл / etc / environment, чтобы установить переменную среды для всей системы.
К сожалению, .NET Core еще не реализовал метод установки переменных среды в системах Unix. В документации по этим методам указано, что применение значений ко всему, кроме текущего процесса, поддерживается только в Windows. : frowning_face:
Самый полезный комментарий
Могу ли я предложить вам изменить название проблемы, чтобы отразить тот факт, что вы ищете PowerShell, чтобы ввести _профильно-независимый_ способ _постоянного_ определения переменных среды?
Несколько мыслей:
Переменные среды по определению _shell / application-agnostic_ и видны _все_ дочерним процессам, независимо от того, какая оболочка / приложение их создала.
PowerShell "слушает" только _2_ переменные среды, одна из которых -
$env:PSModulePath
.Насколько я понимаю, в средах Linux (во всех?) Уже есть файл
/etc/environment
в качестве общесистемного, независимого от оболочки механизма для определения переменных среды.Тем не менее, если набор переменных среды действительно используется только _PowerShell_, то общесистемный профиль _PowerShell_ -
$profile.AllUsersAllHosts
- возможно, _является правильным местом для их определения./etc/profile
, которые, как ожидается, будет обрабатывать оболочка по умолчанию, что (a) не действует для приложений с графическим интерфейсом пользователя, и (b) требует, чтобы оболочка по умолчанию выполняла это ожидание, и (c) требует, чтобы оболочка по умолчанию для понимания синтаксиса оболочки POSIX (которая PowerShell, если бы она была определена как оболочка по умолчанию, не была бы [_Update_:/etc/profile
и~/.profile
теперь _аретится_, если вы начнете сpwsh -l
или используйте PowerShell в качестве оболочки по умолчанию]).