我的功能很小.zshrc
。它创建一个命令来搜索并运行一个可执行文件,该文件在当前目录或当前路径上方的父目录中可能存在或可能不存在。我有逻辑来查找可执行文件(如果存在),但是当我尝试运行它时,出现以下错误:
使用/ Users / username / 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和密码?
围绕这行的报价:
"$current_path/executable_file $@"
告诉外壳程序找到并执行一项-双引号之间的内容(在各种变量扩展之后)。
在最简单的情况下,如果函数没有参数,它将尝试执行:
"$current_path/executable_file "
...这可能会失败,即使$current_path/executable_file
文件本身存在,也有尾随空间。
如果您确实碰巧传递了参数,则存在这样的文件的可能性更低,即:
"$current_path/executable_file arg1 arg2 arg3..."
重新排列引号,以保护$current_path
变量的扩展,但允许可执行文件的名称在以下情况下结束:
"$current_path/executable_file" "$@"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句