Search code examples
linuxbashdash-shell

How to check in dash for root


The standard-solution for bash, see:

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

which is:

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

does not work in dash, which is slowly becoming the standard-shell under Linux. How can the above be ported to dash?


Solution

  • Use id:

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

    Or

    #!/bin/sh
    if [ "$(id -u)" -ne 0 ]; then
        echo "This script must be run as root" 
        exit 1
    fi