i3 dmenu无法浏览$ PATH


13

我想运行一个shell脚本~/.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_run并重新启动了i3。如何通过dmenu启动测试脚本?

Answers:


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_run并重新启动i3的情况,但是它不会影响的行为dmenu
霍德林

@Hölderlin重要的是注销,然后重新登录以重新加载~/.profile
Kenneth B. Jensen

4

我有同样的问题。

这篇Arch Linux论坛帖子描述了该问题:

在〜/ .bashrc中设置$ PATH并不能确保您的WM / dmenu继承该环境。
一个更相关的问题是:“您如何登录?” 通常,在〜/ .bash_profile或〜/ .profile中导出的env在X应用程序中可用。
像通常一样启动dmenu_run,然后在dmenu中,
echo $PATH > /tmp/path
在终端中键入Then,cat /tmp/path以查看该$ PATH是什么。

在我的情况下,~/.profiledmenu不会选择我中设置的$ PATH目录。我的窗口管理器是从.xinitrc启动的,并export PATH=$PATH:/dir/of/interest在该exec my_wm行解决此问题之前在.xinitrc文件中添加了其他内容。虽然有点笨拙。

如前所述,我必须删除~/.cache/dmenu_run文件并进行更改后再次登录才能使其正常工作。


2
对于某些尝试echo $SHELL > /tmp/shell也可能是值得的。我以为我正在使用,bash但事实证明它已使用,zsh因此它检查了不同的配置文件。还尝试将其放入xinitrci3配置中,但都没有用-但/ etc / zprofile可以!本地〜/ .zshrc是不够的。/etc/profilezsh和中都可以很好地工作bash
miyalys

0

我发布了完整的算法:

  1. 将环境变量放在~/.profile~/.xprofile(如果不存在,则创建)中,而不是~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. 注销并登录

要调试环境变量,请输入:

  1. 在dmenu中: echo $PATH > /tmp/path
  2. 在终端: cat /tmp/path
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.