使用 id 检查用户是否存在(linux)

使用 id 检查用户是否存在(linux)

我看到很多关于使用 id 检查用户是否存在于 *nix 系统中的例子

为了测试我的代码,我创建了一个简单的代码,并在检查并验证工作后,我将其复制到开发脚本中

检查用户信息

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

相关内容