Bash 脚本中的源文件

我使用两个版本的 ROS 相邻。要使用它,我必须为特定版本提供一些环境变量。我想创建一个脚本,这样做。 但是如果我创建一个脚本,比如下面的变量没有设置,那么它们可能是在子 shell 中设置的。如何将文件源代码发送到主终端 shell?

网址:

source /opt/ros/fuerte/setup.bash;
source  ~/fuerte_workspace/setup.bash;

下面是我如何调用 source. sh:

./source.sh
# This does not echo anything, but I expect it should
echo $ros_config

更新: 通过按照答案中的建议来源化 source. sh,我现在可以看到正在设置的变量。

source ./source.sh
# This works now
echo $ros_config
125492 次浏览

使用点符号来源于 当前 shell 中的脚本文件,即 而不需要创建子 shell:

. /opt/ros/fuerte/setup.bash
. ~/fuerte_workspace/setup.bash

使用. ./(点空间点斜杠)执行 Shell 脚本

当使用 “dot space dot slash”执行 shell 脚本时,如下所示,它将在当前 shell 中执行脚本,而不会分叉子 shell。

$ . ./setup.bash

换句话说,这将在当前 shell 中执行 setup.bash中指定的命令,并为您准备环境。