Подтвердить что ты не робот

Исходные файлы в bash script

Я использую две версии ROS рядом друг с другом. Чтобы использовать его, я должен указать некоторые переменные среды для конкретной версии. Я хотел бы создать script, который сделает это. Но если я создаю script как ниже, переменные не будут установлены, они, вероятно, будут установлены в подоболочку. Как я могу передать файлы в основную оболочку терминала?

source.sh:

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
4b9b3361

Ответ 1

Выполнить оболочку Script Использование../(пунктирная точка)

Во время выполнения оболочки Script с помощью "dot space dot slash", как показано ниже, он будет выполнять Script в текущей оболочке без наложения подклассов.

$ . ./setup.bash

Другими словами, это выполняет команды, указанные в setup.bash в текущей оболочке, и подготавливает для вас среду.

Ответ 2

Использовать точечную нотацию для источника в файле script в текущей оболочке i.e. без создания под-оболочки:

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