问题解析
当你使用 sudo
来执行脚本时,脚本是以 root 用户的身份运行的。在这种情况下,环境变量 $HOME
指向 root 用户的主目录,即 /root
,而不是你的个人用户主目录。这就是为什么当你使用 sudo
时,安装路径变成 /root/app
的原因。
另一方面,当你不使用 sudo
时,脚本以你的个人用户身份运行,$HOME
指向你的个人用户主目录(例如 /home/your_username
)。然而,如果脚本试图访问或修改需要管理员权限的文件或目录,你会收到权限不足的错误。
为了解决这个问题,你可以:
-
指定一个不需要管理员权限的安装目录:你可以选择一个你的用户有写权限的目录作为安装目录,这样就不需要使用
sudo
。 -
使用
sudo
,但显式设置ZZROOT
:如果你需要使用sudo
,你可以在运行脚本时显式设置ZZROOT
变量,以指定你想要的安装目录。例如:sudo ZZROOT=/path/you/want ./zznasm.sh
这里,
/path/you/want
应该替换为你想要的安装路径。
请注意,使用 sudo
运行命令应该谨慎,因为它具有管理员权限,可以对系统文件和配置进行更改。
使用解决方式2
要使用 sudo
并显式设置 ZZROOT
以便在 yancy
用户的目录中安装,你可以在运行脚本时设置 ZZROOT
变量,并使用 -E
选项来保留环境变量。这是一个示例命令:
sudo -E ZZROOT=/home/yancy/app ./your_script.sh
这里,/home/yancy/app
是你想要的安装路径,your_script.sh
应该替换为你的脚本文件名。
-E
选项告诉 sudo
保留用户的环境变量。这是必要的,因为默认情况下,sudo
不会保留环境变量。
另外,请注意,使用 sudo
运行脚本会给脚本管理员权限,这意味着它可以对系统进行更改。因此,请务必小心,并确保你理解脚本的内容。