web-dev-qa-db-ja.com

i3 dmenuは$ PATHを参照しません

dmenu経由でシェルスクリプト~/.local/bin/test.shを実行したい。 $mod+Dを介してdmenuを実行し、エントリ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からテストスクリプトを起動するにはどうすればよいですか?

12
Hölderlin

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

同じ問題がありました。

このArch Linuxフォーラムの投稿 は問題を説明しています:

〜/ .bashrcに$ PATHを設定しても、WM/dmenuがこの環境を継承することは保証されません。
より適切な質問は、「どのようにログインしますか?」です。通常、〜/ .bash_profileまたは〜/ .profileにエクスポートされたenvはXアプリケーションで使用できます。
通常どおりdmenu_runを起動し、dmenuで次のように入力します
echo $PATH > /tmp/path
次に、ターミナルでcat /tmp/pathを実行して、$ PATHが何であるかを確認します。

私の場合、~/.profileに設定されている$ PATHディレクトリがdmenuで取得されませんでした。私のウィンドウマネージャーは.xinitrcから起動し、export PATH=$PATH:/dir/of/interest行が問題を修正する前に.xinitrcファイルにexec my_wmを追加しました。それは少し不格好ですが。

前述のように、変更を加えた後は、~/.cache/dmenu_runファイルを削除して再度ログインし、機能させる必要がありました。

4
ishigoya

私は完全なアルゴリズムを投稿します:

  1. 環境変数を~/.profileではなく~/.xprofileまたは~/.bashrc(存在しない場合は作成)に配置します
  2. rm -f ~/.cache/dmenu_run
  3. ログアウトしてログイン

環境変数をデバッグするには、次のように入力します。

  1. Dmenu内:echo $PATH > /tmp/path
  2. ターミナル:cat /tmp/path
0