1

使用 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。需要改变什么才能做到这一点?

4

1 回答 1

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 时它都会运行。

于 2013-09-17T20:20:15.733 回答