Obtenha o $ PATH normal ao chamá-lo em um subshell

0

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
    
por iamAguest 30.08.2018 / 17:21

0 respostas