无法设置从配置文件中的行提供的 bash 环境路径

Unable to set bash environment path fed from lines in a config file

我正在尝试使用像这样的简单配置文件来设置 PERL5LIB 的路径:

cat /Users/me/.local/bash.d/perl5lib_dirs | while read line
do
case ":$PERL5LIB:" in
  *:$line:*) :;;
  *) echo 'Adding path: '$line; PERL5LIB="$line:";;
esac
done

显然,由于循环是在子 shell 中打开的,因此当循环退出时,PERL5LIB 变量的值会丢失。

那么我还能怎样完成呢?

重写循环以使用输入 redirection 从文件中读取(从而避免子 shell):

while read line; do
    case ":$PERL5LIB:" in
        *:$line:*) :;;
        *) echo 'Adding path: '$line; PERL5LIB="$line:";;
    esac
done < /Users/me/.local/bash.d/perl5lib_dirs

而不是 运行 游戏尝试获取文件。

例如 abc.sh

abc=123
sh abc.sh
echo $abc

source abc.sh
echo $abc
123