当前位置: 首页 > 面试题库 >

为什么我不能在shell脚本中使用'sudo su'?如何使Shell脚本自动使用sudo运行

方光华
2023-03-14
问题内容

我无法弄清楚这是怎么回事。当我在终端中运行它并输入密码时,什么也没发生,但是如果我在终端中单独运行每个命令,它就可以工作。谢谢!

#!/bin/bash

sudo su;
mkdir /opt/D3GO/;
cp `pwd`/D3GO /opt/D3GO/;
cp `pwd`/D3GO.png /opt/D3GO/;
cp `pwd`/D3GO.desktop /usr/share/applications/;
chmod +x /opt/D3GO/D3GO

问题答案:

Command sudo su启动一个交互式根外壳程序,但不会将当前外壳程序转换为根外壳程序。

做您想要的事情的成语与此类似(感谢@CharlesDuffy的额外注意):

#check for root
UID=$(id -u)
if [ x$UID != x0 ] 
then
    #Beware of how you compose the command
    printf -v cmd_str '%q ' "$0" "$@"
    exec sudo su -c "$cmd_str"
fi

#I am root
mkdir /opt/D3GO/
#and the rest of your commands

这个想法是检查当前用户是否是root用户,如果不是,请使用以下命令重新运行同一命令 su



 类似资料:
  • 问题内容: 我正在尝试创建用于设置Docker容器的Shell脚本。我的脚本文件如下所示: 运行此脚本文件将在新调用的bash中运行容器。 现在,我需要运行一个脚本文件(test.sh),该文件已经位于上述给定的shell脚本的容器内(例如:cd /path/to/test.sh && ./test.sh),该怎么做? 问题答案: 您可以使用以下命令在正在运行的容器中运行命令: 并从bash会话运

  • 拉斯宾(杰西)-root@RaspberryPi-腻子 在我输入的终端中 现在我得到了一个包含此代码的脚本 有一个cronjob每小时启动一次这个脚本 苏。一定有什么地方出错了。因为他将变量$finalanswer解读为nothing。 这意味着在此脚本之外定义的变量将不起作用? 我该如何解决这个问题?

  • 问题内容: 我想在我的node.js服务器上运行shell脚本,但是什么也没发生… 另一个childProcess可以完美地工作,但是上面的过程不能。 如果我在终端中运行脚本,那么它将起作用。有任何想法吗?(设置了chmod + x) 问题答案: exec函数回调函数已将错误,stdout和stderr参数传递给它。查看它们是否可以通过将它们吐到控制台来帮助您诊断问题:

  • 我理解单引号和双引号的用法。 但是我不知道剧本中需要双引号。 这种说法没有区别 请告诉我普通引号和双引号之间的区别。

  • 问题内容: 我需要使用执行一组Cassandra DB命令的nodeJS运行Shell脚本文件。有人可以帮我吗? db.sh文件内部: 问题答案: 您可以使用shelljs模块执行任何shell命令

  • 问题内容: 我想在网站上按下按钮时启动bash脚本。这是我的第一次尝试: 但是没有运气。有什么建议么? 问题答案: 如Luke所述,您需要使用服务器端语言,例如php。这是一个非常简单的php示例: 另存为,并将其放置在装有php的网络服务器上的计算机上。可以使用asp,java,ruby,python,…来完成同一件事