ID를 사용하여 사용자가 존재하는지 확인(Linux)

ID를 사용하여 사용자가 존재하는지 확인(Linux)

ID를 사용하여 *nix 시스템에 사용자가 존재하는지 확인하는 방법에 대한 많은 예가 있습니다.

내 코드를 테스트하기 위해 간단한 코드를 만들고 작업을 확인하고 확인한 후 복사하여 스크립트를 개발했습니다.

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

테스트 코드

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

하지만 내 스크립트의 복사가 작동하지 않을 때

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

테스트 코드

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

답변1

PATH환경에 있습니다.특별한. 스크립트가 수행된 후에는 PATH=$5더 이상 실행 파일을 찾을 수 없습니다 id. 그러므로 이것은

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

조용히 실패합니다.

아마도 덮어쓰고 싶지 않을 것입니다 PATH. 아마 당신은 원할 것입니다소문자로 된 변수.

그러나 만약 당신이정말덮어쓰려면 PATH나중에 새 파일("custom")에 의존하지 않아야 하는 실행 파일의 전체 경로를 사용해야 합니다 PATH. 예 /usr/bin/id.

관련 정보