无需 sudo 即可运行可执行文件

无需 sudo 即可运行可执行文件

我的.zshrc.它创建一个命令来搜索并运行可执行文件,该文件可能存在于当前目录或当前路径上某处的父目录中,也可能不存在。我有逻辑来查找可执行文件(如果存在),但是当我尝试运行它时,出现以下错误:

使用 /Users/用户名/some/directory/executable_file

function_name:15: 没有这样的文件或目录: /Users/username/some/directory/executable_file

由以下代码生成:

if [[ $current_path != / ]]
  then
    echo "Using $current_path/executable_file"
    "$current_path/executable_file $@"

然而,该路径是正确的,因为复制粘贴它或使用 sudo 运行该函数可以完美地工作。我尝试sudo -u在脚本中以当前用户身份运行该函数,但仍然失败。

如何运行可执行脚本,就像用户手动输入它一样,或者至少没有 sudo 和密码?

答案1

围绕这一行的引用:

"$current_path/executable_file $@"

告诉 shell 有一项需要找到并执行——双引号之间的任何内容(在各种变量扩展之后)。

在最简单的情况下,如果函数没有参数,它将尝试执行:

"$current_path/executable_file "

...即使$current_path/executable_file文件本身存在,这也可能会失败,因为有一个尾随空格。

如果您确实传递了参数,则存在此类文件的可能性甚至更低,即:

"$current_path/executable_file arg1 arg2 arg3..."

重新排列引号,以便保护$current_path变量的扩展,但允许可执行文件的名称在应该结束时结束:

"$current_path/executable_file" "$@"

相关内容