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?

Ben Kraft
fuente

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=

glenn jackman
fuente
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