使用 id 檢查使用者是否存在(linux)

使用 id 檢查使用者是否存在(linux)

我看到很多關於使用 id 檢查使用者是否存在於 *nix 系統中的範例

為了測試我的程式碼,我創建了一個簡單的程式碼,在檢查和驗證工作後,我複製了開發腳本

檢查用戶.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,那麼您稍後應該使用不依賴新的(“自訂”)的任何可執行檔的完整路徑PATH。例如/usr/bin/id

相關內容