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
}

通常のユーザーおよびルートとして、checkrootコマンドは期待どおりに実行されます。

ただし、 sudo checkrootsudo 特権を持つ通常のユーザーとして、またはルート自体として実行すると、システムは次のように応答します。 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対話型シェルが呼び出されるたびに実行されるように、好みに合わせて配置することもできます。

于 2013-09-17T20:20:15.733 に答える