我想以某种方式进入一个不同的 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