打开 gnome-terminal 并运行使用 .bashrc 中的环境变量的命令

打开 gnome-terminal 并运行使用 .bashrc 中的环境变量的命令

我正在制作一个 .sh 文件,非高级用户可以通过右键单击 -> 作为程序运行来运行它。它应该打开一个终端窗口并运行一个docker run使用一些环境变量的命令。

我的问题是,我无法告诉终端加载这些环境变量。

我已经export VARIABLE=value尝试.bashrc运行

gnome-terminal -- /bin/bash -c "source .bashrc && echo \$VARIABLE && echo $VARIABLE"

但它输出两个空行。有趣的是,如果我运行

gnome-terminal -- /bin/bash -c "cat .bashrc"

.bashrc它显示了其中预期的内容VARIABLE。我该如何解决这个问题?我也试过了--rcfile ~/.bashrc,没成功。

答案1

这里的问题是bash -c打开一个非交互式shell,并且(至少在默认的 Ubuntu ~/.bashrc 的情况下,从帐户创建时的 /etc/skel 复制而来),接近顶部有这样的内容:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

因此,除非你添加并导出你的VARIABLE 否则,它将被跳过。你可以

gnome-terminal -- /bin/bash -ic "source ~/.bashrc && echo \"\$VARIABLE\"; read"

或(简化引用)

gnome-terminal -- /bin/bash -ic 'source ~/.bashrc && echo "$VARIABLE"; read'

(我添加了read以防止终端随 shell 退出,因为我的 gnome-terminal 配置文件默认这样做)。

答案2

从图形环境启动的程序看不到 中的变量.bashrc。而是[some file name].sh在 中创建/etc/profile.d并在那里设置这些变量。

相关内容