【问题标题】:Linux: Run script in bin with sudoLinux:使用 sudo 在 bin 中运行脚本
【发布时间】:2016-04-18 22:07:45
【问题描述】:

所以我确定这是在某处写的,我只是在搜索时措辞错误,但我一直没能找到它。

我编写 shell 脚本。其中许多脚本需要超级用户权限。我不想将 sudo 命令放在脚本中,而是想从一开始就使用 sudo 调用整个脚本。

所以而不是:

#!/bin/bash
# Sample Script 1

sudo mkdir /usr/tempDir

应该是:

#!/bin/bash
# Sample Script 2

mkdir /usr/tempDir

我会像这样调用它:sudo ./sampleScript.sh

我的问题是,当我写一个脚本时,我将它simlink到我的bin,所以我在执行它时不需要担心脚本的路径。

如果我将文件 sim 链接到我的 bin,并且我将其运行为:sampleScript.sh,它会被识别(并且会失败)。但是,如果我这样做:sudo sampleScript.sh,我会收到“sudo: sampleScript.sh: command not found”消息。

如果它同时在 /home/myName/bin 和 /usr/local/bin 中,就会发生这种情况。

我知道必须有一个技巧才能完成我所缺少的这项工作。而且我也知道我可能只是没有正确地措辞我的谷歌搜索。只是在寻找一些指导来解决这部分问题。

谢谢。

【问题讨论】:

  • 你试过没有./sudo sampleScript.sh吗?如果这不起作用,也许尝试sudo env "PATH=$PATH" sampleScript.sh,因为可能 sudo 自己的 shell 在其 $PATH 中没有该脚本的目录。
  • 如果我的回答对您有帮助,请您接受。

标签: linux bash shell


【解决方案1】:

当您调用 sudo 时,PATH 会发生变化,即它没有使用您的。看这里

sudo changes PATH - why?

它这样做是因为它现在以 root 的身份运行,而不是以您的用户身份运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2010-12-10
    相关资源
    最近更新 更多