如何$PATH
在子 shell 中调用该变量,以便获得在普通 shell 中得到的结果?
[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
在普通 shell 中的变量,但是当我在 shell 脚本中调用这个变量时,我得到:
/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