i3 dmenu 不浏览 $PATH

i3 dmenu 不浏览 $PATH

我想~/.local/bin/test.sh通过运行 shell 脚本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_run并重新启动i3。我该如何通过 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 中导出的 env 在您的 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可以从 dmenu 访问 ~/.local/bin 中的二进制文件之后

相关内容