我的 $HOME/bin 文件夹中的 sudo 脚本

我的 $HOME/bin 文件夹中的 sudo 脚本

我的文件夹中有一个$HOME/bin必须使用sudo.

如果我跑

sudo <nameofthescript>

我明白了

sudo: <nameofthescript>: command not found

$PATH将此脚本添加到of 的最佳方式是什么sudo

我应该把它搬进去/usr/local/sbin吗?

我应该创建一个/root/bin文件夹吗?

答案1

sudo设置了 limit PATH,所以它不会找到你的本地脚本。您可以将其配置为不env_reset针对给定用户等,但也许最简单的事情是编写您自己的一行mysudo脚本,该脚本执行以下操作:

#!/bin/sh
exec sudo -s PATH="$PATH" exec "$@"

然后说mysudo somecommand ...代替sudo somecommand ...。它会要求 sudo 运行 shell,将其设置PATH回原来的状态,然后运行在原始路径中找到的命令。

答案2

PATH是 Linux、Windows 等操作系统上的环境变量,它具有可执行程序所在的特定目录集。根据您的问题,您的可执行脚本放置在$HOME/bin目录下。因此,如果你想运行不在 PATH 中的脚本,你需要提供完整的文件结构路径,让操作系统到达该文件来执行它。例如,

sudo $HOME/bin/<nameofthescript>

如果您不想始终提供完整的文件路径,可以使用以下命令将该文件路径放入真正的环境中。考虑到,您已将脚本保存在$HOME/bin目录中。

PATH=$PATH:$HOME/bin

上面的命令会将您的 bin 目录添加到环境路径中,然后您可以<nameofscript>从系统上的任何位置使用。另外,这只会在 bash 运行之前起作用,如果您在新终端中尝试相同的操作,您的 PATH 将更改为默认值。要使其永久化,您需要在$HOME/.profile$HOME/.bashrc文件中添加以下行。

export PATH=$PATH:$HOME/bin

要只允许 root 用户从任何地方执行<nameofscript>,您可以放在 under/sbin/usr/sbin目录中。

相关内容