为了在当前shell中执行shell脚本,我们需要使用句点.
或source
命令.但为什么它没有sudo许可?
我有一个具有执行权限的脚本,名为setup.sh
.当我使用句点时,我得到:
$ sudo . ./setup.sh
sudo: .: command not found
source命令也会产生类似的错误.我错过什么了吗?我应该怎么做才能在同一个shell中使用sudo权限运行脚本?
提前谢谢..
为了在当前shell中执行shell脚本,我们需要使用句点.
或source
命令.但为什么它没有sudo许可?
我有一个具有执行权限的脚本,名为setup.sh
.当我使用句点时,我得到:
$ sudo . ./setup.sh
sudo: .: command not found
source命令也会产生类似的错误.我错过什么了吗?我应该怎么做才能在同一个shell中使用sudo权限运行脚本?
提前谢谢..
你想做的事是不可能的;您当前的shell在您的常规用户ID下运行(即,如果没有root,access sudo
将为您提供权限),而there is no way to grant it root access.sudo
所做的是创建一个新的*sub*进程,以root用户身份运行.子进程可以只是一个常规程序(例如,sudo cp ...
在根进程中运行cp
程序),也可以是一个根子shell,但它可能是当前shell.
(实际上,这甚至比这更不可能,因为sudo
命令本身是作为当前shell的子进程执行的——这意味着从某种意义上说,它在"当前shell"中做任何事情都为时已晚,因为它不是在那里执行的.)