$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