i3 dmenu không duyệt $ PATH


13

Tôi muốn chạy một kịch bản shell ~/.local/bin/test.shthông qua dmenu. Nếu tôi chạy dmenuqua $mod+Dvà duyệt tìm mục test.shtôi không thể tìm thấy nó.

Đường dẫn ~/.local/binđã được đặt thành $PATHbiến của tôi trong~/.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

Tôi cũng gỡ bỏ ~/.cache/dmenu_runvà khởi động lại i3. Tôi có thể làm gì để khởi chạy tập lệnh thử nghiệm qua dmenu?

Câu trả lời:


7

Xóa ~/.cache/dmenu_runhoặc ~/dmenu_cache, tùy thuộc vào số tiền bạn có và đăng nhập lại. Sau khi PATH của bạn được tải lại từ .profile sau khi đăng nhập, dmenu sẽ tạo lại bộ đệm từ $ PATH. dmenu dường như rất tệ trong việc làm mới bộ đệm của chính nó và đôi khi cần phải thực hiện nó.

Đồng thời kiểm tra xem bạn đã kích hoạt bit thực thi cho tập lệnh chưa:

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

Xin lỗi, tôi quên đề cập rằng tôi đã gỡ bỏ ~/.cache/dmenu_runvà khởi động lại i3 nhưng nó không ảnh hưởng đến hành vi của dmenu.
Hölderlin

@ Hölderlin Điều quan trọng là bạn phải đăng xuất và đăng nhập lại để tải lại~/.profile
Kenneth B. Jensen

4

Tôi đã từng gặp vấn đề tương tự.

Bài đăng trên diễn đàn Arch Linux này mô tả vấn đề:

Đặt $ PATH trong ~ / .bashrc không đảm bảo WM / dmenu của bạn sẽ kế thừa env này.
Một câu hỏi phù hợp hơn để hỏi là "Làm thế nào để bạn đăng nhập?" Thông thường env được xuất trong ~ / .bash_profile hoặc ~ / .profile có sẵn trong các ứng dụng X của bạn.
Khởi chạy dmenu_run như bạn thường làm, sau đó trong dmenu, nhập
echo $PATH > /tmp/path
Then trong một thiết bị đầu cuối, cat /tmp/pathđể xem $ PATH đó là gì.

Trong trường hợp của tôi, các thư mục $ PATH được đặt trong ~/.profiledmenu của tôi. Trình quản lý cửa sổ của tôi được bắt đầu từ .xinitrc và thêm phần bổ sung export PATH=$PATH:/dir/of/interestvào tệp .xinitrc trước khi exec my_wmdòng khắc phục sự cố. Đó là một chút clunky mặc dù.

Như đã lưu ý trước đó, tôi phải xóa ~/.cache/dmenu_runtệp và đăng nhập lại sau khi thực hiện thay đổi để làm cho nó hoạt động.


2
Đối với một số cố gắng echo $SHELL > /tmp/shellcũng có thể có giá trị nó. Tôi nghĩ rằng tôi đang sử dụng bashnhưng hóa ra nó đã sử dụng zshđể kiểm tra các tập tin cấu hình khác nhau. Cũng đã thử đặt nó vào xinitrci3cấu hình nhưng cả hai đều không hoạt động - nhưng / etc / zprofile đã làm! Địa phương ~ / .zshrc là không đủ. /etc/profilecó thể làm việc tốt trong cả hai zshbash.
miyalys

0

Tôi đăng thuật toán đầy đủ:

  1. Đặt env vars vào ~/.profilehoặc ~/.xprofile(Tạo nếu không tồn tại), không phải trong~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. Đăng xuất và đăng nhập

Để gỡ lỗi kiểu vv env:

  1. Trong dmenu: echo $PATH > /tmp/path
  2. Trong thiết bị đầu cuối: cat /tmp/path
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.