Powershell: Modifique as variáveis ​​de ambiente (por exemplo $ env: PSModulePath) no Linux

Criado em 25 jul. 2017  ·  3Comentários  ·  Fonte: PowerShell/PowerShell

Olá a todos,

Acho que seria ótimo se você pudesse alterar as variáveis ​​de ambiente (acessadas, por exemplo, por $ env: Name ou Get-ChildItem env :) no Linux.

Por exemplo, para definir os valores de um novo arquivo de configuração em / etc ?

No Windows, posso alterar, por exemplo, PSModulePath e adicionar um caminho personalizado. A única opção no Linux é criar um arquivo ps1 de perfil para todos os usuários.

Obrigada.

Issue-Discussion Issue-Enhancement WG-Engine-Providers

Comentários muito úteis

Posso sugerir que você altere o título do seu problema para refletir o fato de que você está procurando o PowerShell para apresentar uma maneira _profile-independente_ de definir _persistentemente_ as variáveis ​​de ambiente?

Algumas reflexões:

  • Variáveis ​​de ambiente são por definição _shell / application-agnostic_ e são vistas por _todos_ os processos descendentes, independente de qual shell / aplicativo os criou.

  • O PowerShell "escuta" apenas _2_ variáveis ​​de ambiente, $env:PSModulePath sendo uma delas.

  • Pelo que entendi, os ambientes Linux (todos eles?) Já possuem o arquivo /etc/environment como um mecanismo independente de shell para definir variáveis ​​de ambiente em todo o sistema.

  • Dito isso, se um conjunto de variáveis ​​de ambiente é realmente usado apenas por _PowerShell_, então o perfil _PowerShell_ de todo o sistema - $profile.AllUsersAllHosts - indiscutivelmente _é_ o lugar certo para defini-los.

    • Essa solução também funcionaria para o macOS, que não tem mais um mecanismo de todo o sistema para definir variáveis ​​de ambiente.
    • (o macOS tem /etc/profile , que se espera que o shell padrão processe, que (a) não tem efeito para aplicativos GUI, e (b) requer o shell padrão para honrar esta expectativa e (c) requer o shell padrão para entender a sintaxe do shell POSIX (que PowerShell, se fosse definido como o shell padrão, não [_Update_: /etc/profile e ~/.profile now _are_ honrado se você começar com pwsh -l ou use PowerShell como o shell padrão]).

Todos 3 comentários

Posso sugerir que você altere o título do seu problema para refletir o fato de que você está procurando o PowerShell para apresentar uma maneira _profile-independente_ de definir _persistentemente_ as variáveis ​​de ambiente?

Algumas reflexões:

  • Variáveis ​​de ambiente são por definição _shell / application-agnostic_ e são vistas por _todos_ os processos descendentes, independente de qual shell / aplicativo os criou.

  • O PowerShell "escuta" apenas _2_ variáveis ​​de ambiente, $env:PSModulePath sendo uma delas.

  • Pelo que entendi, os ambientes Linux (todos eles?) Já possuem o arquivo /etc/environment como um mecanismo independente de shell para definir variáveis ​​de ambiente em todo o sistema.

  • Dito isso, se um conjunto de variáveis ​​de ambiente é realmente usado apenas por _PowerShell_, então o perfil _PowerShell_ de todo o sistema - $profile.AllUsersAllHosts - indiscutivelmente _é_ o lugar certo para defini-los.

    • Essa solução também funcionaria para o macOS, que não tem mais um mecanismo de todo o sistema para definir variáveis ​​de ambiente.
    • (o macOS tem /etc/profile , que se espera que o shell padrão processe, que (a) não tem efeito para aplicativos GUI, e (b) requer o shell padrão para honrar esta expectativa e (c) requer o shell padrão para entender a sintaxe do shell POSIX (que PowerShell, se fosse definido como o shell padrão, não [_Update_: /etc/profile e ~/.profile now _are_ honrado se você começar com pwsh -l ou use PowerShell como o shell padrão]).

Tentei definir uma variável de ambiente como esta em uma máquina Ubuntu:
Eu esperava que isso fosse editar o arquivo / etc / environment para definir a variável de ambiente em todo o sistema.

Infelizmente, o .NET Core ainda precisa implementar um método para definir variáveis ​​de ambiente em sistemas Unix. A documentação para esses métodos afirma que a aplicação de valores a qualquer coisa diferente do processo atual só é compatível com o Windows. : frowning_face:

Esta página foi útil?
0 / 5 - 0 avaliações