Menu i3 dmenu tidak meramban $ PATH

13

Saya ingin menjalankan skrip shell ~/.local/bin/test.shvia dmenu. Jika saya menjalankan dmenumelalui $mod+Ddan menelusuri entri test.shsaya tidak dapat menemukannya.

Jalur ~/.local/binsudah disetel ke $PATHvariabel saya di~/.profile

$ echo $PATH
/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Saya juga menghapus ~/.cache/dmenu_rundan me-restart i3. Apa yang bisa saya lakukan untuk meluncurkan skrip pengujian melalui dmenu?

Hölderlin
sumber

Jawaban:

7

Hapus ~/.cache/dmenu_runatau ~/dmenu_cache, tergantung pada yang Anda miliki, dan masuk kembali. Setelah PATH Anda dimuat kembali dari. Profil setelah masuk, dmenu harus membuat ulang cache dari $ PATH. dmenu tampaknya buruk tentang memperbarui cache sendiri, dan perlu dipaksa untuk melakukannya kadang-kadang.

Juga periksa apakah Anda telah mengaktifkan bit yang dapat dieksekusi untuk skrip:

$ ls -l ~/.local/bin/test.sh
-rwxrwxrwx 1 user group 152 Jan 11 04:09 /home/user/.local/bin/test.sh
Kenneth B. Jensen
sumber
Maaf, saya lupa menyebutkan bahwa saya sudah menghapus ~/.cache/dmenu_rundan memulai ulang i3 tetapi itu tidak mempengaruhi perilaku dmenu.
Hölderlin
@ Hölderlin Penting agar Anda keluar, dan masuk kembali untuk memuat ulang~/.profile
Kenneth B. Jensen
4

Saya memiliki masalah yang sama.

Posting forum Arch Linux ini menjelaskan masalah:

Mengatur $ PATH di ~ / .bashrc tidak memastikan WM / dmenu Anda akan mewarisi env ini.
Pertanyaan yang lebih relevan untuk ditanyakan adalah, "Bagaimana Anda masuk?" Biasanya env yang diekspor dalam ~ / .bash_profile atau ~ / .profile tersedia di aplikasi X Anda.
Luncurkan dmenu_run seperti biasa, lalu di dmenu, ketik
echo $PATH > /tmp/path
Kemudian di terminal, cat /tmp/pathuntuk melihat apa $ PATH itu.

Dalam kasus saya, direktori $ PATH yang diset pada saya ~/.profiletidak diambil oleh dmenu. Manajer jendela saya dimulai dari .xinitrc, dan menambahkan tambahan export PATH=$PATH:/dir/of/interestdalam file .xinitrc sebelum exec my_wmsaluran memperbaiki masalah. Ini agak kikuk.

Seperti disebutkan sebelumnya, saya harus menghapus ~/.cache/dmenu_runfile dan masuk lagi setelah membuat perubahan agar berfungsi.

ishigoya
sumber
2
Bagi sebagian orang mencoba echo $SHELL > /tmp/shelljuga bisa sia-sia. Saya pikir saya menggunakan bashtetapi ternyata itu digunakan zshsehingga memeriksa file konfigurasi yang berbeda. Juga mencoba memasukkan xinitrcdan i3mengkonfigurasi tetapi tidak satupun dari mereka yang bekerja - tetapi / etc / zprofile melakukannya! Lokal ~ / .zshrc tidak cukup. /etc/profiledapat bekerja dengan baik di keduanya zshdan bash.
miyalys
0

Saya memposting algoritma lengkap:

  1. Tempatkan env vars di ~/.profileatau ~/.xprofile(Buat jika tidak ada), bukan di~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. Logout dan log in

Untuk men-debug env vars ketik:

  1. Dalam dmenu: echo $PATH > /tmp/path
  2. Di terminal: cat /tmp/path
Rostislav Teryaev
sumber