$(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-parts
等head
。
由于盒子不是外壳,并且命令也不是简单的命令(一个命令,可能带有选项),您将必须调用原始命令有壳的。您可以使用以下命令从 GUI 框中执行此操作
sh -c 'your command'
其中your command
是您最初尝试运行的命令(用双引号替换单引号,因为单引号参数不能sh -c
包含其他单引号)。