具有不同环境变量的 Bash shell

具有不同环境变量的 Bash shell

我想以某种方式进入一个不同的 bash shell,并更改一些环境变量。

例如,如果我运行脚本bfin.sh并且它包含类似的内容

export PATH=/home/me/bfin2012:$PATH

我希望它使用这个更改后的变量创建一个 bash shell。这个怎么做?

答案1

要加载已放入文件中的环境变量,可以使用该source命令。例如

查看当前路径:

 > echo $PATH
 /bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

具有自定义环境设置的文件..

 > cat exports
 export PATH="/home/me/bfin2012:$PATH"
 export ...

加载自定义环境

 > source exports

确认更改。

 > env | grep '^PATH'
 PATH=/home/me/bin2012:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin

答案2

您已经设置了变量并导出了设置的变量。如果您想输入新的此时,在存在该变量的 bash shell 中,您只需运行:

bash

请注意,新 shell 的启动过程可能最终会覆盖您的变量!.bashrc例如,这可能发生在。

答案3

将脚本更改为以 结尾exec bash,或者运行

sh -c '. bfin.sh; exec bash'

如果你想改变当前shell的环境,运行

. bfin.sh

.(点或句点)builtin 在同一 shell 环境中执行指定脚本中的命令,就像函数一样。

答案4

运行该bfin.sh脚本对您没有什么帮助。它将更改环境变量的值PATH,然后终止。更改的变量是脚本环境的一部分,因此当脚本结束时它会丢失。

shellbash将在运行脚本之前自动获取变量提到的文件BASH_ENV,因此假设您的脚本myscript有一个引用解释器#!的 -line bash,以下内容将获取bfin.sh脚本,然后使用修改后的环境运行脚本:

BASH_ENV=path/to/bfin.sh ./myscript

您还可以bfin.sh从新脚本中获取脚本:

#!/bin/bash

source path/to/bfin.sh

# the rest of the script goes here

相关内容