Powershell: Изменить переменные среды (например, $ env: PSModulePath) в Linux

Созданный на 25 июл. 2017  ·  3Комментарии  ·  Источник: PowerShell/PowerShell

Всем привет,

Я думаю, было бы здорово, если бы вы могли изменить переменные среды (например, доступ к $ env: Name или Get-ChildItem env :) в Linux.

Например, чтобы установить там значения новый файл конфигурации в / etc ?

В Windows я могу изменить, например, PSModulePath и добавить собственный путь. Единственный вариант в Linux - создать файл профиля ps1 для всех пользователей.

Спасибо.

Issue-Discussion Issue-Enhancement WG-Engine-Providers

Самый полезный комментарий

Могу ли я предложить вам изменить название проблемы, чтобы отразить тот факт, что вы ищете PowerShell, чтобы ввести _профильно-независимый_ способ _постоянного_ определения переменных среды?

Несколько мыслей:

  • Переменные среды по определению _shell / application-agnostic_ и видны _все_ дочерним процессам, независимо от того, какая оболочка / приложение их создала.

  • PowerShell "слушает" только _2_ переменные среды, одна из которых - $env:PSModulePath .

  • Насколько я понимаю, в средах Linux (во всех?) Уже есть файл /etc/environment в качестве общесистемного, независимого от оболочки механизма для определения переменных среды.

  • Тем не менее, если набор переменных среды действительно используется только _PowerShell_, то общесистемный профиль _PowerShell_ - $profile.AllUsersAllHosts - возможно, _является правильным местом для их определения.

    • Это решение также будет работать для macOS, у которой нет общесистемного механизма для определения переменных среды (больше).
    • (в macOS есть /etc/profile , которые, как ожидается, будет обрабатывать оболочка по умолчанию, что (a) не действует для приложений с графическим интерфейсом пользователя, и (b) требует, чтобы оболочка по умолчанию выполняла это ожидание, и (c) требует, чтобы оболочка по умолчанию для понимания синтаксиса оболочки POSIX (которая PowerShell, если бы она была определена как оболочка по умолчанию, не была бы [_Update_: /etc/profile и ~/.profile теперь _аретится_, если вы начнете с pwsh -l или используйте PowerShell в качестве оболочки по умолчанию]).

Все 3 Комментарий

Могу ли я предложить вам изменить название проблемы, чтобы отразить тот факт, что вы ищете PowerShell, чтобы ввести _профильно-независимый_ способ _постоянного_ определения переменных среды?

Несколько мыслей:

  • Переменные среды по определению _shell / application-agnostic_ и видны _все_ дочерним процессам, независимо от того, какая оболочка / приложение их создала.

  • PowerShell "слушает" только _2_ переменные среды, одна из которых - $env:PSModulePath .

  • Насколько я понимаю, в средах Linux (во всех?) Уже есть файл /etc/environment в качестве общесистемного, независимого от оболочки механизма для определения переменных среды.

  • Тем не менее, если набор переменных среды действительно используется только _PowerShell_, то общесистемный профиль _PowerShell_ - $profile.AllUsersAllHosts - возможно, _является правильным местом для их определения.

    • Это решение также будет работать для macOS, у которой нет общесистемного механизма для определения переменных среды (больше).
    • (в macOS есть /etc/profile , которые, как ожидается, будет обрабатывать оболочка по умолчанию, что (a) не действует для приложений с графическим интерфейсом пользователя, и (b) требует, чтобы оболочка по умолчанию выполняла это ожидание, и (c) требует, чтобы оболочка по умолчанию для понимания синтаксиса оболочки POSIX (которая PowerShell, если бы она была определена как оболочка по умолчанию, не была бы [_Update_: /etc/profile и ~/.profile теперь _аретится_, если вы начнете с pwsh -l или используйте PowerShell в качестве оболочки по умолчанию]).

Я попытался установить такую ​​переменную среды на машине Ubuntu:
Я надеялся, что это отредактирует файл / etc / environment, чтобы установить переменную среды для всей системы.

К сожалению, .NET Core еще не реализовал метод установки переменных среды в системах Unix. В документации по этим методам указано, что применение значений ко всему, кроме текущего процесса, поддерживается только в Windows. : frowning_face:

Была ли эта страница полезной?
0 / 5 - 0 рейтинги