'Kaynak' komutunu 'include' ifadesindeki gibi düşünün. Argümanın içeriğini alır ve doğrudan yönetiliyormuş gibi çalıştırır. Bu durumda komutunuz 'run.sh' argümanıyla 'source' olur ve run.sh komutunu komut satırınıza tam olarak run.sh içeriğini yazmış gibi yürütülür.
'./Run.sh' komutunu çalıştırdığınızda, './run.sh' komutunuzdur ve argümanı yoktur. Bu dosya düz metin olduğundan ve ikili olmadığından, kabuğunuz shebang'da (ilk satırda '#!') Bir tercüman arar ve '/ bin / bash' bulur. Böylece kabuğunuz yeni bir bash örneği başlatır ve run.sh içeriği bu yeni örneğin içinde çalıştırılır.
İlk durumda, bash 'exit' komutuna ulaştığında, komut satırına yazmışsınız gibi yürütülür. İkinci durumlarda bash işleminde çalıştırılır ve kabuğunuz sadece bu bash örneği bir 'exit' komutu alır.
Bash içine bir satır yazdığınızda, ilk boşluktan önceki herhangi bir şey komut olarak kabul edilir ve sonraki her şey bağımsız değişken olarak değerlendirilir. Komuta '.' "kaynak" ın takma adıdır. Koştuğunda '. run.sh 'the'. bağımsız değişkenlerinden bir boşlukla ayrıldığı için tek başına bir komuttur. './Run.sh' komutunu çalıştırdığınızda komutunuz './run.sh' ve '.' Komutudur. '.' ile run.sh komutunun göreli yolunun bir parçasıdır. mevcut klasörünüzü temsil eder.
$- = *i*çalıştığına dair ipuçları var mı?