$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