![我的 $HOME/bin 文件夹中的 sudo 脚本](https://linux22.com/image/131306/%E6%88%91%E7%9A%84%20%24HOME%2Fbin%20%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%20sudo%20%E8%84%9A%E6%9C%AC.png)
我的文件夹中有一个$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
目录中。