首页 > 解决方案 > 无法从 bash 脚本获取 ~/.bashrc

问题描述

在我的脚本中,我尝试获取两个文件来获取变量。

但它未能获得~/.bashrc.

OS: Ubuntu Desktop 20.04.2 LTS
$ cat debug.sh

#!/usr/bin/env bash

cat > ~/env.sh << EOF
VAR1="123"
EOF

echo "VAR2=456" >> ~/.bashrc

source ~/env.sh
source ~/.bashrc

set -u
echo ${VAR1}
echo ${VAR2}
$ ./debug.sh

123
./debug.sh: line 14: VAR2: unbound variable

标签: linuxbashshell

解决方案


在 ubuntu 版本中,.bashrc 会检查是否交互运行,如果不是,则什么也不做。非交互式意味着你在另一个 shell 中调用它,你可以在 .bashrc 中注释掉以下行。

# If not running interactively, don't do anything

case $- in
*i*) ;;
  *) return;;
esac

推荐阅读