为什么我只能在终端中运行此命令,而不能在启动命令或运行命令 GUI 框中运行?

为什么我只能在终端中运行此命令,而不能在启动命令或运行命令 GUI 框中运行?
$(run-parts --list --reverse --regex '^KeePassXC-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]-x86_64\.AppImage' bin | head -n 1)

(上述命令的目的是运行在 中找到的最新版本的 KeePassXC ~/bin;我不想每次升级 KeePass 时都必须修改启动项)

上面的命令似乎有效如果从终端运行。但是,如果我按Alt+F2来获取 GUI“运行命令”框,则会收到错误消息:

Failed to execute child process "$(run-parts" (No such file or directory)

更重要的是,如果我尝试在启动应用程序中输入以下命令,也会发生类似的问题:

Could not execute '$(run-parts --list --reverse --regex '^KeePassXC-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]-x86_64\.AppImage' bin | head -n 1)'
Failed to execute child process "$(run-parts" (No such file or directory)

我想我的错误可能是启动应用程序/运行命令 GUI 框运行命令而/不是~?所以我“修复”了我的命令,即我删除了bin它并将其替换为/home/m/bin但这没有帮助。

为什么我无法从终端以外的任何地方执行此命令?

答案1

错误信息:

Could not execute '$(run-parts --list --reverse --regex '^KeePassXC-[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]-x86_64\.AppImage' bin | head -n 1)'
Failed to execute child process "$(run-parts" (No such file or directory)

这表明您正在输入命令的框不是 shell,而是尝试执行文字命令。 shell 会解析命令、扩展命令替换、运行管道run-partshead

由于盒子不是外壳,并且命令也不是简单的命令(一个命令,可能带有选项),您将必须调用原始命令有壳的。您可以使用以下命令从 GUI 框中执行此操作

sh -c 'your command'

其中your command是您最初尝试运行的命令(用双引号替换单引号,因为单引号参数不能sh -c包含其他单引号)。

相关内容