서브셸에서 호출될 때 일반 $PATH 가져오기

서브셸에서 호출될 때 일반 $PATH 가져오기

$PATH일반 쉘에서 얻은 결과를 얻기 위해 서브쉘에서 이 변수를 어떻게 호출할 수 있습니까 ?

[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

이것은 $PATH일반 쉘의 변수이지만 쉘 스크립트에서 이 변수를 호출하면 다음과 같은 결과를 얻습니다.

/sbin:/bin:/usr/sbin:/usr/bin

내 목표는 사용자의 bin 경로에 자동으로 추가되는 스크립트를 만드는 것입니다(물론 파일을 대체하거나 손상시키지 않도록 파일이 이미 존재하는지 확인하는 것입니다) $PATH. 스크립트.

여기 내 완전한 스크립트가 있습니다. 초기 시도와 테스트로 인해 많은 아티팩트가 있으므로 무시하십시오.

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

관련 정보