Bash no lee env?


0

El contexto para esto es que quiero leer la ruta del usuario desde xmonad, donde la ruta se modifica por lo que sea que esté en su .bashrc, si corresponde.

Esto es lo que me parece extraño: si tengo xmonad execute bash -cl "env && echo $PATH" devuelve un env que incluye uno $PATH el cual no coincide con el devuelto por echo. (Quiero lo primero.)

¿Lo que da?

¿Y hay una manera de solucionar este problema, aparte de analizar el env ¿salida?

Respuestas:


2

La shell está sustituyendo el valor de $ PATH primero, debido a las comillas dobles. No estoy seguro de lo que está haciendo el primer conjunto de comillas dobles, pero pruebe uno de

'bash -cl "env && echo $PATH"'
"bash -cl 'env && echo $PATH'"

Ahora, ¿estás tratando de extraer solo la ruta de la salida env? Si es así, echo No es la herramienta. Querrías env | grep ^PATH=


He editado la publicación original, mi formato no estaba claro: las citas externas eran solo para activar el comando que se estaba ejecutando. Estoy tratando de obtener el $PATH (como sea posible modificado por ~/.bash_profile y tal), solo estoy haciendo ambas cosas env y echo para comparar las salidas como una medida de solución de problemas. env Funciona, pero me interesa saber por qué echo. echo no lo hace
Ben Kraft

El quid de esta respuesta sigue en pie. los echo $PATH La parte fue evaluada por su shell actual y su expansión pasó a la subshell. Use comillas simples o haga esto en su lugar: echo "$(env && echo $PATH)"
bahamat

Esto fue razonablemente cerca de lo que funcionó; Creo que parte del problema era cómo estaba generando el proceso en xmonad. Pero definitivamente ayudó, así que gracias a todos!
Ben Kraft
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.