サブシェルから呼び出されたときに通常の$ 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

関連情報