Como eu poderia chamar a variável $PATH
em um subshell, de forma que eu obtivesse o resultado que usaria no shell normal?
[ec2-user@ip-172-31-45-160 ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
Essa é minha variável $PATH
no shell normal, mas quando eu chamo essa variável em um script de shell, fico:
/sbin:/bin:/usr/sbin:/usr/bin
Meu objetivo era criar um script que se adicionasse automaticamente ao caminho bin do usuário (claro, verificar se o arquivo já existe para não substituí-lo e quebrar alguma coisa) e, para isso, eu precisava do $PATH
desse shell variável a ser acessada dentro do script.
Este é o meu roteiro completo. Há muitos artefatos de tentativas e testes anteriores, então, por favor, não se incomode com eles:
#!/bin/bash
# This script will try to add itself to the user's path after being executed the first time
FILENAME=$(basename $0)
# echo $FILENAME
PATHVARS=$(echo $PATH)
NRPATHS=$(echo $PATHVARS | awk -F ':' '{print NF}')
# echo "$PATHVARS $NRPATHS"
echo $PATH
PATHLIST=$(echo $PATH | tr ':' ' ')
echo $PATHLIST
for word in $PATHLIST; do
# echo "$word ---------------"
if [[ -e "${word}/${FILENAME}" ]]; then
echo "File ${word}/${FILENAME} already exists!"
else
# echo "Self copy successful: ${word}/${FILENAME}"
cp -f ${FILENAME} ${word}/${FILENAME}
fi
done