Verifique se o usuário existe usando id (linux)

Verifique se o usuário existe usando id (linux)

Vejo muitos exemplos sobre como verificar se o usuário existe no sistema *nix usando id

Para testar meu código criei um código simples e após verificar e verificar o trabalho copiei para desenvolver o script

verificaruser.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

Código de teste

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

Mas quando a cópia no meu script não funciona

#!/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

Código de teste

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

Responder1

PATHestá no ambiente, éespecial. Depois que seu script for executado PATH=$5, ele não será mais capaz de encontrar o idexecutável; portanto isso

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

falha silenciosamente.

Você provavelmente não deseja sobrescrever PATH. Você provavelmente quersuas variáveis ​​em letras minúsculas.

No entanto, se vocêrealmentedeseja substituir PATH, posteriormente você deverá usar o caminho completo para qualquer executável que não deva depender do new ("custom") PATH. Por exemplo /usr/bin/id.

informação relacionada