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からテストスクリプトを起動するにはどうすればよいですか?
削除~/.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
同じ問題がありました。
この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
ファイルを削除して再度ログインし、機能させる必要がありました。
私は完全なアルゴリズムを投稿します:
~/.profile
ではなく~/.xprofile
または~/.bashrc
(存在しない場合は作成)に配置しますrm -f ~/.cache/dmenu_run
環境変数をデバッグするには、次のように入力します。
echo $PATH > /tmp/path
cat /tmp/path