执行子进程失败(文件或目录不存在)

4
我正在尝试将一个命令绑定到openbox WM中的某个按键以运行脚本。我使用以下xml行来完成此操作:
.
.
<keybind key="W-t">
  <action name="Execute">
    <command>"bash /home/bibek/test.sh"</command>
  </action>
</keybind>
.

当我尝试使用我分配的快捷键调用命令时,会弹出一个带有错误消息的弹窗:
Failed to execute child process "bash /home/bibek/test.sh" (no such file or directory)

这是~/test.sh的样子:
#!/usr/bin/env bash
audacious & exit`  

我希望能够显然地做更多的事情;这是一个测试脚本。 该脚本可以从终端正常运行。 这里可能有什么问题?

很有可能找不到 bash。可能是因为 PATH 环境变量不包含你期望的内容。所以试着回答这个问题:那个变量究竟包含了什么? - arkascha
找不到?我不明白。我也尝试了不同的shebang(#!/bin/bash),但没什么用。 - Bibek_G
不,这是无法找到的原始命令。你调用:bash ... 系统无法找到 那个 bash。它与你想要执行的文件内容无关。 - arkascha
那很可能是对的,我会确认一下是否真的是问题所在。 - Bibek_G
你能否编辑你的问题,展示一下你是如何在Openbox中将这个命令绑定到一个按键上的? - Kenster
显示剩余3条评论
3个回答

3

在绑定openbox按键时,只需要移除bash即可解决此问题。Openbox进程会运行该脚本,而脚本中提供的shebang会自动调用相应的解释器。


2

首先确保bash和你的脚本都有正确的路径。

$ which bash
$ ls /home/bibek/test.sh

which bash 返回的路径应该出现在你的shebang和/或openbox wm中的脚本中。如果你得到了“command not found”的错误,则需要修复你的$PATH变量。


$ which bash 告诉我 /bin/bash。我试过使用这个 shebang,结果一样。还尝试在 openbox 中使用 /bin/bash ~/test.sh 而不是 bash ~/test.sh,但也不起作用。 - Bibek_G
1
尝试在xml中放置bash的完整路径。-> <command>"/bin/bash /home/bibek/test.sh"</command>。或者你已经尝试过了吗? - reynoldsnlp
同样的结果。很奇怪,尽管 $ /bin/bash /home/bibek/test.sh 能够工作,但从“Alt+f2”运行菜单执行相同的命令却不能。 - Bibek_G
请召唤一位驱魔师。(抱歉,我对Openbox一无所知) - reynoldsnlp
尝试使用"/bin/bash -c /home/bibek/test.sh"进行测试。 - AAAfarmclub
显示剩余3条评论

0

第一行应该是 #!/usr/bin,而不是 #!/usr/bin/。那个 / 也是一个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接