2

bash の標準ソリューションについては、次を参照してください。

https://askubuntu.com/questions/15853/how-can-a-script-check-if-its-being-run-as-root

つまり:

#!/bin/bash
if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 
   exit 1
fi

は、Linux の標準シェルになりつつあるダッシュでは機能しません。上記をダッシュ​​に移植するにはどうすればよいですか?

4

3 に答える 3

8

使用id:

if [ "$(id -u)" -eq 0 ]; then
    echo "I am root!"
fi

または

#!/bin/sh
if [ "$(id -u)" -ne 0 ]; then
    echo "This script must be run as root" 
    exit 1
fi
于 2014-08-13T08:09:22.100 に答える
1

「id -u」コマンドを使用して、現在の有効なユーザー ID を取得します。

#!/bin/dash
MYUID=`id -u`
if [ "$MYUID" -eq 0 ]
then
    echo "You are root"
else
    echo "You are the non-root user with uid $MYUID"
fi
于 2014-08-13T08:33:12.273 に答える
0

私が通常行うことは、実際に必要な機能をチェックすることです。これにより、別の特権アカウントを介して実行することを好むユーザーに対してもスクリプトが正しく機能します (*BSDtoorではcsh以前は .最近は心が欲しくなるでしょうが、とにかく)。

test -w /usr/share/bin ||
{ echo "$0: /usr/share/bin not writable -- aborting" >&2; exit 1 }
于 2014-08-13T08:06:09.810 に答える