Powershell: Modificar variables de entorno (por ejemplo, $ env: PSModulePath) en Linux

Creado en 25 jul. 2017  ·  3Comentarios  ·  Fuente: PowerShell/PowerShell

Hola a todos,

Creo que sería genial si pudiera cambiar las variables de entorno (a las que se accede, por ejemplo, por $ env: Name o Get-ChildItem env :) en Linux.

Por ejemplo, para establecer los valores de un nuevo archivo de configuración en / etc ?

En Windows puedo cambiar, por ejemplo, PSModulePath y agregar una ruta personalizada. La única opción en Linux es crear un archivo ps1 de perfil para todos los usuarios.

Gracias.

Issue-Discussion Issue-Enhancement WG-Engine-Providers

Comentario más útil

¿Puedo sugerirle que cambie el título de su problema para reflejar el hecho de que está buscando PowerShell para introducir una forma _independiente del perfil_ de definir _persistentemente_ las variables de entorno?

Algunos pensamientos:

  • Las variables de entorno son, por definición, _shell / application-agnostic_ y son vistas por _todos_ los procesos descendientes, independientemente de qué shell / aplicación las haya creado.

  • PowerShell "escucha" solo _2_ variables de entorno, siendo $env:PSModulePath una de ellas.

  • Por lo que tengo entendido, los entornos Linux (¿todos ellos?) Ya tienen el archivo /etc/environment como un mecanismo independiente de shell en todo el sistema para definir variables de entorno.

  • Dicho esto, si un conjunto de variables de entorno realmente solo es utilizado por _PowerShell_, entonces el perfil _PowerShell_ de todo el sistema - $profile.AllUsersAllHosts - posiblemente _es_ el lugar correcto para definirlas.

    • Esta solución también funcionaría para macOS, que ya no tiene un mecanismo de todo el sistema para definir variables de entorno.
    • (macOS tiene /etc/profile , que se espera que procese el shell predeterminado, que (a) no tiene efecto para las aplicaciones GUI y (b) requiere que el shell predeterminado cumpla con esta expectativa y (c) requiere el shell predeterminado para comprender la sintaxis POSIX-shell (qué PowerShell, si estuviera definido como el shell predeterminado, no [_Update_: /etc/profile y ~/.profile ahora _son_ honrados si comienza con pwsh -l o use PowerShell como shell predeterminado]).

Todos 3 comentarios

¿Puedo sugerirle que cambie el título de su problema para reflejar el hecho de que está buscando PowerShell para introducir una forma _independiente del perfil_ de definir _persistentemente_ las variables de entorno?

Algunos pensamientos:

  • Las variables de entorno son, por definición, _shell / application-agnostic_ y son vistas por _todos_ los procesos descendientes, independientemente de qué shell / aplicación las haya creado.

  • PowerShell "escucha" solo _2_ variables de entorno, siendo $env:PSModulePath una de ellas.

  • Por lo que tengo entendido, los entornos Linux (¿todos ellos?) Ya tienen el archivo /etc/environment como un mecanismo independiente de shell en todo el sistema para definir variables de entorno.

  • Dicho esto, si un conjunto de variables de entorno realmente solo es utilizado por _PowerShell_, entonces el perfil _PowerShell_ de todo el sistema - $profile.AllUsersAllHosts - posiblemente _es_ el lugar correcto para definirlas.

    • Esta solución también funcionaría para macOS, que ya no tiene un mecanismo de todo el sistema para definir variables de entorno.
    • (macOS tiene /etc/profile , que se espera que procese el shell predeterminado, que (a) no tiene efecto para las aplicaciones GUI y (b) requiere que el shell predeterminado cumpla con esta expectativa y (c) requiere el shell predeterminado para comprender la sintaxis POSIX-shell (qué PowerShell, si estuviera definido como el shell predeterminado, no [_Update_: /etc/profile y ~/.profile ahora _son_ honrados si comienza con pwsh -l o use PowerShell como shell predeterminado]).

Intenté configurar una variable de entorno como esta en una máquina Ubuntu:
Esperaba que esto editara el archivo / etc / environment para establecer la variable de entorno en todo el sistema.

Desafortunadamente .NET Core aún tiene que implementar un método para establecer variables de entorno en sistemas Unix. La documentación de esos métodos establece que la aplicación de valores a cualquier cosa que no sea el proceso actual solo se admite en Windows. : frunciendo el ceño:

¿Fue útil esta página
0 / 5 - 0 calificaciones