Burada sorduğum şey son derece alışılmadık / sıradışı / riskli veya Google-fu becerilerim sadece rahatsız edici değil ...
Bir bashkabuk betiğinde, başka bir kabuk betiği tarafından kaynaklanıp kaynaklanmadığını veya kendi başına mı çalıştırıldığını söylemenin kolay bir yolu var mı? Başka bir deyişle, aşağıdaki iki davranış arasında ayrım yapmak mümkün müdür?
# from another shell script
source myScript.sh
# from command prompt, or another shell script
./myScript.sh
Yapmayı düşündüğüm, bashkaynak verildiğinde kullanılabilecek işlevleri içeren bir yardımcı program benzeri kabuk betiği oluşturmak . Bu komut dosyası kendi başına çalıştırıldığında, tanımlanmış işlevlere dayalı olarak belirli işlemleri gerçekleştirmesini de isterim. Bu kabuk betiğinin alabileceği bir ortam değişkeni var mı, örneğin;
some_function() {
# ...
}
if [ -z "$IS_SOURCED" ]; then
some_function;
fi
Tercihen, arayan betiğinin herhangi bir bayrak değişkenini ayarlamasını gerektirmeyen bir çözüm arıyorum.
düzenleme : betiğin kaynak koduyla çalıştırılması arasındaki farkı, burada kullanılan betiğin (her iki şekilde de) farkını söylemek mümkün olup olmadığını öğrenmeye çalışıyorum arasındaki farkı biliyorum .
.Komut hakkında hiç bir şey sormuyor , bir betiğin normal olarak mı kaynaklandığını veya normal bir şekilde çalıştırılıp çalıştırılmadığını (örneğin bir deniz kabuğu altında) soruyor .