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?

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=


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.