使用RedHat 6,以下脚本位于/etc/profile.d/my_custom_script.sh
function checkroot {
if [ "$(whoami)" != "root" ]; then
echo "Sorry, you are not root."
return
else
echo "You've got the powah!"
fi
}
作为普通用户,以root身份,checkroot
命令按预期运行。
然而,在跑步时
sudo checkroot
作为具有sudo权限的普通用户,或者作为root本身,系统响应
sudo: checkroot: command not found
该命令与sudo -i checkroot
成功运行,但我不想为sudo提供此选项。需要改变什么才能实现这一目标?
答案 0 :(得分:2)
由于sudo不允许通过自身导出函数,所以这是不可能的。您可以将该函数保存到脚本文件中,并使用它运行sudo:
#!/bin/bash
function checkroot {
if [ "$(whoami)" != "root" ]; then
echo "Sorry, you are not root."
return
else
echo "You've got the powah!"
fi
}
checkroot
执行命令
sudo bash script.sh
您可以选择直接放置命令
#!/bin/bash
if [ "$(whoami)" != "root" ]; then
echo "Sorry, you are not root."
else
echo "You've got the powah!"
fi
您可以根据自己的喜好放置~/.bashrc
,以便每次调用交互式shell时都会运行。