Prüfen, ob der Benutzer anhand der ID existiert (Linux)

Prüfen, ob der Benutzer anhand der ID existiert (Linux)

Ich sehe viele Beispiele für die Überprüfung, ob ein Benutzer in einem *nix-System anhand der ID existiert

Um meinen Code zu testen, habe ich einen einfachen Code erstellt und nach Überprüfung und Verifizierung der Arbeit habe ich ihn kopiert, um ein Skript zu entwickeln

checkuser.sh

#!/usr/bin/env bash

function checkUser() {
  if id "$USER" >/dev/null 2>&1; then
        echo "user exists"
  else
        echo "user does not exist"
  fi
}

USER=$4
checkUser

Testcode

sudo local/checkuser.sh misitio test 7.3 abkrim /home/abkrim/Sites/ 
abkrim.EXISTS
user exists

Aber das Kopieren in meinem Skript funktioniert nicht

#!/usr/bin/env bash
if [ $EUID != 0 ]; then
    sudo "$0" "$@"
    exit $?
fi

SITE=$1
PHP=$3
USER=$4
NGINX=/etc/nginx/
FPM=/etc/php/${PHP}/fpm/pool.d/
PATH=$5
checkUser

Testcode

sudo local/deploy_site.sh misitio test 7.3 abkrim /home/abkrim/Sites/                                                         
abkrim
user does not exist

Antwort1

PATHist in der Umwelt, es istbesonders. Nachdem Ihr Skript dies getan hat PATH=$5, kann es die idausführbare Datei nicht mehr finden. Daher

id "$USER" >/dev/null 2>&1

schlägt stillschweigend fehl.

Sie möchten wahrscheinlich nicht überschreiben PATH. Sie möchten wahrscheinlichIhre Variablen in Kleinbuchstaben.

Wenn Sie jedochWirklichüberschreiben möchten PATH, sollten Sie später den vollständigen Pfad zu jeder ausführbaren Datei verwenden, die nicht von der neuen („benutzerdefiniert“) abhängen soll PATH. Beispiel /usr/bin/id:

verwandte Informationen