2009-06-19 8 views

cevap

51

Emin - Sen işlevini kullanmak istediğiniz komut, komut olduğu noktada dosyada function.sh içerikleri dahil eşdeğerdir

source function.sh 

gibi bir komut yazabilirsiniz içinde koşmak. function.sh'un $PATH'daki dizinlerden birinde olması gerektiğini unutmayın; Eğer değilse, mutlak bir yol belirtmeniz gerekir.

+3

function.sh, PATH'nizde herhangi bir yerde olabilir. Bash posix modundaysa, geçerli dizine bakmayacaktır. Bu, tüm man sayfada açıklanmıştır. – camh

+0

Doğru, diğer şeylerle karıştırdım. –

+0

Diyelim ki 'function.sh' içinde de bir kod var. Will source function.sh' da kodu yürütün? – user1527227

9

Evet, tüm işlevlerinizi ortak bir dosyada (veya dosyalarda) yerelleştirebilirsiniz. Bu benim tüm yardımcı fonksiyonumla yaptığım şey. Geçerli kabuk bağlamında komut çalıştırır

. $HOME/utility.shinc 

: Birlikte tüm programlar tarafından kullanılan benim ev dizininde tek utility.shinc var. Bu önemlidir - eğer içerme komut dosyasını çalıştırırsanız, bir alt kabukta çalışır ve herhangi bir değişiklik mevcut kabukta yayılmaz.

Aynı şeyi komut dosyaları için de yapabilirsiniz. Bir "ürün" ün parçasıysa, her şeyin yerelleştirildiğinden emin olmak için tüm komut dosyalarını ve dahil edilen komut dosyalarını tek bir kabuk dizinine yerleştirmeyi tercih ederim.

-2

Evet, yapabilirsin! Komut dosyanızda kaynak işlev_adı'u ekleyin. Ben example.VAR = $ (funtion_name) değişkenini oluşturmayı tercih ediyorum, eğer kaynak fonksiyon_sayısını #!/Bin/bash'den sonra eklerseniz, betiğiniz önce içe aktarılmış fonksiyon görevini çalıştırır ve o zaman mevcut betik görevinizi daha iyi ve değişken oluşturmak için kullanır. senaryoda her yerde. Teşekkür ederim ... Sizin için işinizi yapın :)

+0

Niçin yayınlanmış olan cevapları kopyalıyorsun ... 8 yıl önce? –

+0

Daha iyi bir anlayış için .. Daha önce kısa bir süre önce yayınladım. –