在profile.d中发布一个bash脚本

时间:2013-09-17 20:16:45

标签: linux bash shell unix redhat

使用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提供此选项。需要改变什么才能实现这一目标?

1 个答案:

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