以下代码检查您是否具有 root 权限,然后使用它再次运行脚本:
CMDLN_ARGS="$@" # Command line arguments for this script (if any)
export CMDLN_ARGS
func_check_for_sudo() {
if [ ! $( id -u ) -eq 0 ]; then
echo "You may be asked for your login password for [`whoami`]." ;sleep 1
LAUNCH="`dirname \"${0}\"`"
exec sudo -S su -c ${LAUNCH}/$(basename ${0}) ${CMDLN_ARGS}
exit ${?}
fi
}
出了问题的地方是当我将此脚本放在“$HOME/bin”文件夹或其他东西中时,我可以在没有路径的情况下启动它。它给了我错误“没有这样的文件或目录”。我需要脚本来获取该信息并将其正确传递给 exec。
我的问题是:如何在没有路径的情况下从脚本中正确获取 /path/to/script_name ?回顾一下,我调用 MY_SCRIPT insead /path/to/MY_SCRIPT 这会破坏我的脚本,因为它必须检查 root 权限,如果你没有它,它必须再次运行。
基本上,有问题的代码行是 ${0} 是脚本名称(如果你用一个来调用它,则带有路径):
exec sudo -S su -c ${0} ${CMDLN_ARGS}