2012-05-28 22 views
25

İki komut dosyası 1.sh ve 2.sh. export kabuk komutumda çalışmaz

#!/bin/sh 
echo $variable 

ne okumak göre, bu (ihracat) gibi yapıyor birinde değişkenleri erişebilir

şu şekildedir:

#!/bin/sh 
variable="thisisit" 
export variable 

2.sh aşağıdaki gibidir:

1.sh olduğunu Başka bir kabuk betiği. Ama bu benim senaryolarımda çalışmıyor. Birisi yardım edebilir mi? Şimdiden teşekkürler. Bu ancak komut ya da başka işlemleri çağrı işlemi, komut tarafından yürütülen işlemlere geçirilir, böylece

+0

ve bu kabuk komut dosyalarını nasıl çalıştırıyorsunuz? – linuxeasy

+0

ayrıca bkz: http://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-scrip#176788 ve http: // unix.stackexchange.com/questions/3507/difference-between-environment-variables-and-exported-environment-variables-in-b – lesmana

+0

Önce terminalde 1.sh çalışıyorum, sonra aynı terminalde 2.sh'i çalıştırıyorum. .. – Xander

cevap

5

export yürütme kabuk ortamında bir değişken koyar. export etkisini görmek için

#!/bin/sh 
FOO=bar 
env | grep '^FOO=' 

ve

#!/bin/sh 
FOO=bar 
export FOO 
env | grep '^FOO=' 

yürütme deneyin.

1.sh den 2.sh değişkeni olsun ya 1.sh dan 2.sh arayın veya aktarmak için 1.sh 2.sh yılında: Eğer Sonra sh 1.sh veya ./1.sh gibi dosyalarınızı yürütme ise bir alt bunu yürütme

#!/bin/sh 
. ./1.sh 
echo $variable 
59

-kabuk.

Eğer mevcut kabuğunda yapılacak değişiklikler istiyorsanız, yapabilirsiniz:

. 1.sh 
# OR 
source 1.sh 

reference-documentation geçmekte düşünün.

"bir komut dosyası kullanılarak çalıştırıldığında source [veya .] komut filename olarak sadece çalıştırılırsa o komut tamamlandıktan sonra mevcut kabuğun içinde, komut dosyası tarafından oluşturulan veya değiştirilen değişkenler aksine. Kullanılmaya devam edecektir çalışır Daha sonra, betiği çalıştırmak için ayrı bir alt kabuk (tamamen ayrı bir değişkenler kümesiyle birlikte) oluşturulur. "

+0

OP, birçok platformda minimal POSIX kabuk olan ve 'source' komutunu desteklemeyen'/bin/sh' kullanıyor. –

+0

hmmm .. '' '' '' '' ve 'uzay' hakkında bahsettim. Kaynaktan bahsetmiştim, çünkü insanların günümüzde kullandıkları şey bu. – linuxeasy

+0

1.sh: 3: kaynak: bulunamadı: :( 1.sh'imin 2.sh çalıştırılmasını istemiyorum, 1.sh'i ilk olarak çalıştırmak istiyorum, kapattıktan sonra 2.sh .. Yanıtlar için teşekkürler – Xander

İlgili konular