i3 dmenu가 $PATH를 탐색하지 않습니다.

i3 dmenu가 $PATH를 탐색하지 않습니다.

~/.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

i3 도 제거 ~/.cache/dmenu_run하고 다시 시작했습니다. dmenu를 통해 테스트 스크립트를 어떻게 시작합니까?

답변1

~/.cache/dmenu_run보유하고 있는 항목에 따라 또는 을 삭제 ~/dmenu_cache하고 다시 로그인하세요. 로그인 후 .profile에서 PATH를 다시 ​​로드한 후 dmenu는 $PATH에서 캐시를 다시 생성해야 합니다. dmenu는 자체 캐시를 업데이트하는 데 능숙하지 않은 것 같으며 때로는 강제로 업데이트해야 할 때도 있습니다.

또한 스크립트의 실행 가능 비트를 활성화했는지 확인하십시오.

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

답변2

나는 완전한 알고리즘을 게시했습니다.

  1. 대신 에 환경 변수를 ~/.profileor ~/.xprofile(존재하지 않는 경우 생성) 에 넣으십시오.~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. 로그아웃하고 로그인하세요

환경 변수를 디버그하려면 다음을 입력하십시오.

  1. d 메뉴에서:echo $PATH > /tmp/path
  2. 터미널에서:cat /tmp/path

답변3

나는 같은 문제를 가지고있다.

이 Arch Linux 포럼 게시물문제를 설명하세요.

~/.bashrc에 $PATH를 설정한다고 해서 WM/dmenu가 이 환경을 상속받는다는 보장은 없습니다.
더 관련 있는 질문은 "어떻게 로그인합니까?"입니다. 일반적으로 ~/.bash_profile 또는 ~/.profile로 내보낸 환경은 X 응용 프로그램에서 사용할 수 있습니다.
dmenu_run을 정상적으로 시작한 다음 dmenu에서
echo $PATH > /tmp/path
터미널에 Then을 입력하여 cat /tmp/path$PATH가 무엇인지 확인하세요.

~/.profile내 경우에는 dmenu가 $PATH에 설정된 디렉터리를 선택하지 않았습니다. 내 창 관리자는 .xinitrc에서 시작되었으며 export PATH=$PATH:/dir/of/interest해당 행이 문제를 해결하기 전에 .xinitrc 파일에 추가를 추가했습니다. exec my_wm조금 부피가 크긴 하지만요.

언급한 대로 파일을 삭제 ~/.cache/dmenu_run하고 변경한 후 다시 로그인해야 작동하게 되었습니다.

답변4

이 문제를 해결하는 가장 좋은 방법은 아니지만 나에게 도움이 된 유일한 방법은
~/.config/i3/config에서 교체하는 것이었습니다.

bindsym $mod+d exec --no-startup-id dmenu_run

그리고

bindsym $mod+d exec --no-startup-id "export PATH=~/.local/bin:$PATH; dmenu_run"

rm ~/.cache/dmenu_run && i3-msg reload~/.local/bin의 바이너리는 dmenu에서 액세스할 수 있습니다.

관련 정보