为了在当前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"中做任何事情都为时已晚,因为它不是在那里执行的.)

Linux相关问答推荐

AddressSaniizer随机抛出没有任何解释的SIGSEGV

如何在Linux上获取clang中的模板实例化统计?

如何调试tokio任务挂起的位置?

将十六进制文件名转换为十进制

Bash shell 脚本未通过 TRUE 条件

无法放弃所有权限,但可以放弃 CAP_SETUID 权限.

CMake:处理静态库和共享库的正确方法

在 Ubuntu 中,如何设置 Tomcat 9 以使用 Java 17?

从 Ansible 中的 shell 命令输出中提取特定数据

增加 mysql docker 中的 max_allowed_pa​​cket 大小

如何在python中检索进程开始时间(或正常运行时间)

为什么 XGrabKey 会生成额外的聚焦和聚焦事件?

使用 ssh 判断远程主机上是否存在文件

如何链接到 GCC 中特定版本的共享库

如何将路径名中的..转换为 bash 脚本中的绝对名称?

如何关闭被杀死的程序打开的套接字?

如何等待第一个命令完成?

Windows 开发环境值得付出代价吗?

如何在 Linux 中查看日志(log)文件并在查看时应用自定义过滤器?

构建窗口管理器