2013-04-15 26 views
29

Yan yana iki ROS sürümü kullanıyorum. Birini kullanmak için, belirli bir sürüm için bazı ortam değişkenlerini kaynaklamak zorundayım. Bunu yapan bir senaryo oluşturmak istiyorum. Ancak, aşağıdakine benzer bir betik oluşturursam, değişkenler ayarlanmamışsa, bunlar muhtemelen bir alt kabuğa yerleştirilir. Dosyaları ana terminal kabuğuna nasıl kaynak yapabilirim?Bir bash komut dosyasındaki kaynak dosyaları

source.sh:

İşte
source /opt/ros/fuerte/setup.bash; 
source ~/fuerte_workspace/setup.bash; 

i nasıl sesleniyorum edilir source.sh:

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

Güncelleme: ben can cevap önerildiği üzere source.sh kaynak olarak şimdi ayarlanan değişkenleri gör. Bir alt kabuk yaratmadan akım kabuk yani komut dosyası dosyasında kaynağına

source ./source.sh 
# This works now 
echo $ros_config 
+2

Kaynak kaynak 's kaynağı nedir? Bu size yardımcı olabilir: http://stackoverflow.com/a/15968190/1983854 – fedorqui

+0

Bu işe yaradı! – user408041

cevap

53

kullanma Shell denetimini uygulayın. ./ (nokta boşluk noktası eğik çizgisi)

Kabuk betiğini aşağıda gösterildiği gibi “dot space dot slash” kullanarak yürütürken, bir alt kabuğu engellemeden geçerli kabuktaki komut dosyasını yürütür. Başka bir deyişle

$ . ./setup.bash 

, bu mevcut kabuğunda setup.bash belirtilen komutları çalıştırır ve sizin için çevreyi hazırlar.

4

Kullanım nokta gösterimi:

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

./source.sh kullanırsam işe yaramıyor. kaynak source.sh çalışıyor! – user408041

+0

Kurulum için tam yol sağladığınızdan, bu yüzden ''/',' '/' dır. – anubhava

+0

"'./Source.sh' "komut dosyasını (kendi kabuğunda) yürütür. "'../source.sh' "(veya" 'source./source.sh'" veya "' source source.sh' ") komut içeriğini mevcut kabuk ortamına uygulayacaktır. – clusterdude