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_runi3을 제거했다 가 다시 시작했습니다. dmenu를 통해 테스트 스크립트를 시작하려면 어떻게해야합니까?

답변:


7

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

죄송합니다, 나는 이미 ~/.cache/dmenu_runi3를 제거 했다가 다시 시작 한다는 것을 잊어 버렸지 만의 동작에 영향을 미치지 않습니다 dmenu.
Hölderlin

@ Hölderlin 로그 아웃 한 다음 다시 로그인하여 다시로드하는 것이 중요합니다 ~/.profile
.

4

나는 같은 문제가 있었다.

이 아치 리눅스 포럼 게시물 은 문제를 설명합니다 :

~ / .bashrc에 $ PATH를 설정해도 WM / dmenu가이 env를 상속하지는 않습니다.
보다 관련성이 높은 질문은 "어떻게 로그인합니까?"입니다. 일반적으로 ~ / .bash_profile 또는 ~ / .profile로 내 보낸 env는 X 응용 프로그램에서 사용할 수 있습니다.
평소와 같이 dmenu_run을 실행 한 다음 dmenu
echo $PATH > /tmp/path
에 터미널에 다음을 입력 cat /tmp/path하여 $ PATH가 무엇인지 확인하십시오.

제 경우에는 ~/.profiledmenu 에서 내 $ PATH 디렉토리를 선택하지 않았습니다. 내 창 관리자는 .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모두 잘 작동 할 수 있습니다 . zshbash
miyalys 2018 년

0

전체 알고리즘을 게시합니다.

  1. 장소 ENV는에 바르 ~/.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.