i3 dmenu ไม่เรียกดู $ PATH


13

ฉันต้องการที่จะเรียกใช้สคริปต์เปลือกผ่าน~/.local/bin/test.sh dmenuถ้าฉันเรียกใช้dmenuผ่าน$mod+Dและเรียกดูรายการtest.shฉันไม่พบมัน

เส้นทาง~/.local/binถูกตั้งค่าเป็น$PATHตัวแปรของฉันแล้ว~/.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

ฉันยังลบ~/.cache/dmenu_runและรีสตาร์ท i3 ฉันจะทำอย่างไรเพื่อเปิดสคริปต์ทดสอบผ่าน dmenu

คำตอบ:


7

ลบ~/.cache/dmenu_runหรือ~/dmenu_cacheขึ้นอยู่กับที่คุณมีและลงชื่อเข้าใช้อีกครั้งหลังจาก PATH ของคุณโหลดใหม่จาก. profile หลังจากเข้าสู่ระบบ dmenu ควรสร้างแคชใหม่จาก $ PATH dmenu ดูเหมือนจะไม่ดีเกี่ยวกับการต่ออายุแคชของตัวเองและจำเป็นต้องถูกบังคับให้ทำบางครั้ง

ตรวจสอบด้วยว่าคุณได้เปิดใช้งานบิตเรียกใช้งานสำหรับสคริปต์:

$ ls -l ~/.local/bin/test.sh
-rwxrwxrwx 1 user group 152 Jan 11 04:09 /home/user/.local/bin/test.sh

ขออภัยฉันลืมที่จะพูดถึงว่าฉันออกแล้ว~/.cache/dmenu_runและรีสตาร์ท i3 dmenuแต่มันไม่ได้ส่งผลกระทบต่อการทำงานของ
Hölderlin

@ Hölderlinเป็นเรื่องสำคัญที่คุณจะต้องออกจากระบบและลงชื่อเข้าใช้อีกครั้งเพื่อโหลด~/.profile
Kenneth B. Jensen

4

ผมมีปัญหาเดียวกัน.

โพสต์ฟอรัม Arch Linux นี้อธิบายถึงปัญหา:

การตั้งค่า $ PATH ใน ~ / .bashrc ไม่แน่ใจว่า WM / dmenu ของคุณจะรับช่วง env นี้หรือไม่
คำถามที่เกี่ยวข้องเพิ่มเติมที่ต้องถามคือ "คุณเข้าสู่ระบบได้อย่างไร" โดยปกติแล้ว env ที่ส่งออกใน ~ / .bash_profile หรือ ~ / .profile จะพร้อมใช้งานในแอปพลิเคชัน X ของคุณ
เรียกใช้ dmenu_run ตามปกติแล้วใน dmenu พิมพ์
echo $PATH > /tmp/path
จากนั้นในเทอร์มินัลcat /tmp/pathเพื่อดูว่า $ PATH คืออะไร

ในกรณีของฉันไดเรกทอรี $ PATH ที่ตั้งใน~/.profiledmenu ของฉันไม่ได้รับ ตัวจัดการหน้าต่างของฉันเริ่มต้นจาก. xinitrc และเพิ่มส่วนเพิ่มเติมexport PATH=$PATH:/dir/of/interestในไฟล์. xinitrc ก่อนที่exec my_wmบรรทัดจะแก้ไขปัญหา มันเป็นความคิดเล็กน้อย

ตามที่ระบุไว้ก่อนหน้านี้ฉันต้องลบ~/.cache/dmenu_runไฟล์และลงชื่อเข้าใช้อีกครั้งหลังจากทำการเปลี่ยนแปลงเพื่อให้มันใช้งานได้


2
สำหรับความพยายามบางอย่างecho $SHELL > /tmp/shellอาจคุ้มค่า ฉันคิดว่าฉันกำลังใช้อยู่bashแต่มันกลับกลายเป็นว่ามันใช้แล้วzshดังนั้นจึงตรวจสอบไฟล์กำหนดค่าต่างๆ ลองใส่มันลงไปxinitrcแล้วตั้งค่าi3แต่ก็ไม่ทำงานเลย - แต่ / etc / zprofile ก็ทำได้! ท้องถิ่น ~ / .zshrc ไม่เพียงพอ /etc/profileอาจจะทำงานได้เป็นอย่างดีทั้งในและzsh bash
miyalys

0

ฉันโพสต์อัลกอริทึมแบบเต็ม:

  1. วาง env vars ไว้ใน~/.profileหรือ~/.xprofile(สร้างถ้าไม่มี), ไม่เข้า~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. ออกจากระบบและเข้าสู่ระบบ

หากต้องการดีบัก env vars ให้พิมพ์:

  1. ใน dmenu: echo $PATH > /tmp/path
  2. ในอาคารผู้โดยสาร: cat /tmp/path
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.