ID を使用してユーザーが存在するかどうかを確認する (Linux)

ID を使用してユーザーが存在するかどうかを確認する (Linux)

*nixシステムでIDを使用してユーザーが存在するかどうかを確認する例はたくさんあります

コードをテストするために簡単なコードを作成し、動作を確認して検証した後、スクリプトを開発するためにコピーしました。

チェックユーザー

#!/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は、後で新しい(「カスタム」)に依存しない実行可能ファイルへのフルパスを使用する必要がありますPATH。例/usr/bin/id

関連情報