没有“导出”的子进程继承的Bash环境变量

时间:2012-04-27 19:44:53

标签: bash environment-variables

我在〜/ bin /中有以下脚本,以覆盖gnome-terminal的默认命令:

#!/usr/bin/env bash
XDG_CONFIG_HOME=~/.config/darkthemesettings /usr/bin/gnome-terminal

我试图让XDG_CONFIG_HOME变量只能被gnome-terminal看到,但是在出现的终端中,如果我运行任何其他程序,该变量也会在该程序中设置。从终端运行echo $XDG_CONFIG_HOME给出     /家庭//。配置/ darkthemesettings

我理解如果在不使用export的情况下设置环境变量,则该变量仅在设置它的脚本中可用,而不在任何子进程中。我不对吗?我怎样才能达到我想要的目标?感谢

2 个答案:

答案 0 :(得分:2)

您可以使用env取消设置终端内运行命令的变量,如下所示:

XDG_CONFIG_HOME=~/.config/darkthemesettings gnome-terminal -x env -u XDG_CONFIG_HOME bash

命令XDG_CONFIG_HOME=~/.config/darkthemesettings之前的赋值gnome-terminal设置终端的变量。终端将在-x选项之后运行参数作为shell命令。该shell命令bashenv -u XDG_CONFIG_HOME为前缀,在运行bash的环境中取消设置变量。

答案 1 :(得分:0)

您的理解不正确。没有export它们是bash变量。 export“将”提升为环境变量。

你需要让gnome-terminal运行一个脚本,在运行shell之前取消设置变量。