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
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
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
PATH
está no meio ambiente, é especial . Depois que seu script fazPATH=$5
, ele não consegue mais localizar oid
executável; portanto issosilenciosamente falha.
Você provavelmente não deseja sobrescrever
PATH
. Você provavelmente quer suas variáveis em letras minúsculas .No entanto, se você realmente deseja substituir
PATH
, deverá usar o caminho completo para qualquer executável que não dependa do new ("custom")PATH
. Ex/usr/bin/id
.