Bash tidak membaca env?

0

Konteks untuk ini adalah bahwa saya ingin membaca path pengguna dari xmonad, di mana path dimodifikasi oleh apa pun yang ada di.

Inilah yang saya temukan aneh: jika saya menjalankan xmonad bash -cl "env && echo $PATH" mengembalikan sebuah env yang termasuk satu $PATH yang tidak cocok dengan yang dikembalikan oleh gema. (Saya ingin yang pertama.)

Apa yang menyebabkannya?

Dan apakah ada cara untuk memperbaikinya, selain mengurai env keluaran?

Ben Kraft
sumber

Jawaban:

2

Shell mengganti nilai $ PATH terlebih dahulu, karena tanda kutip ganda. Saya tidak yakin apa yang dilakukan set tanda kutip ganda, tetapi coba salah satunya

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

Sekarang, apakah Anda mencoba mengekstrak hanya path dari output env? Jika begitu, echo bukan alat. Kamu ingin env | grep ^PATH=

glenn jackman
sumber
Saya telah mengedit posting asli, format saya tidak jelas: tanda kutip luar hanya untuk mematikan perintah yang sedang dijalankan. Saya mencoba untuk mendapatkan $PATH (seperti yang mungkin dimodifikasi oleh ~/.bash_profile dan semacamnya), aku hanya melakukan keduanya env dan echo untuk membandingkan output sebagai ukuran pemecahan masalah. env bekerja, tapi saya tertarik untuk tahu mengapa gema echo tidak.
Ben Kraft
Inti dari jawaban ini masih ada. Itu echo $PATH bagian dievaluasi oleh shell Anda saat ini dan perluasannya diteruskan ke subkulit. Gunakan kutipan tunggal atau lakukan ini sebagai gantinya: echo "$(env && echo $PATH)"
bahamat
Ini cukup dekat dengan apa yang berhasil; bagian dari masalahnya adalah, saya pikir, bagaimana saya menelurkan proses di xmonad. Tapi itu pasti membantu, jadi terima kasih semuanya!
Ben Kraft