Исходные файлы в 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
Ответы
Ответ 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