Yanıtlar:
Terminaliniz bir komut çalıştırır (büyük olasılıkla bash
), komutlarınızı soran ve bunları çalıştıran olan.
Bu etkileşimli modun yanı sıra, bir dosyadan komut çalıştırmak için kabuğunuzu da kullanabilirsiniz. Dosyanızdaki komutları yürütmek için kabuğu doğrudan çağırabilir bash script
veya dosyanızı bir "shebang" ile başlatabilir #!/bin/bash
ve yürütülebilir ( chmod +x script
) yapabilirsiniz. Sonra komut dosyasını bir ikili gibi ele alabilir ve örneğin olarak çalıştırabilir ./script
veya kabuğun aradığı bir yere koyabilirsiniz. ( echo $PATH
)
Muhtemelen hem etkileşimli kabuğunuz hem de çalıştırmak için kullanılan kabuktur bash
. "İlk gün öğrenme linux" bash açısından her iki modda da tamamen aynı şekilde çalışır. - Daha sonra ufak farklar hakkında tökezleyebilirsiniz. Eğer gerçekten ayrıntılı olarak bilmek istiyorsanız, okuma man bash
ve "interaktif" bahseden yerleri aramak öneririz . (Tuşuna basarak bir adam sayfasında arama yapabilirsiniz /
.)
Dikkat edilmesi gereken önemli bir nokta, betiğin yeni bir işlem olarak çalıştırılmasıdır. Bu özellikle kodda ayarlanan değişkenlerin çağıran kabukta görünmediği anlamına gelir.
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
Dışa aktarma olmadan a
iç komut dosyası bile görünmez.
Genel olarak, cevap "hayır" olurdu, kabuktaki komutlar, komut dosyalarında, sözdiziminde ve anlambiliminde aynıdır.
Ancak, ortamın yapılandırılmasıyla ilgili bir grup küçük nüans var (hangi değişkenlerin kullanıldıkları ve nelere ayarlandıkları).
Linux için seçim interaktif kabuk bash, ancak komut dosyası genellikle (diğer tercüman kullanan sh
bir öncülü olan bash
, ksh
kullandığınız hangi kabuk dikkate almak zorunda, (şimdiki kabuğun adının, bash ile ilgili par olan) geleneksel olarak değişkendir SHELL
, yazmayı deneyin echo $SHELL
).
etkileşimli oturum ve komut dosyası yürütme için aynı yorumlayıcının yapılandırılmasında farklılıklar olabilir.
Hayır. Komut dosyası, terminale yazabileceğiniz komutların listesidir.
Bir komut dosyasının toplamını terminale yapıştırabilirsiniz ve sonuç onu çalıştırmakla aynı olacaktır.
Tersine, terminal komutlarınızı bir dosyanın içine "kaydedebilir" ve yeniden kullanılabilir bir komut dosyasına dönüştürebilir ve aileniz ve arkadaşlarınızla paylaşabilirsiniz.
source script_file
. ENV'yi düzenleyen mevcut bağlamda değişiklik gösterir. betiği çalıştırırken, açıkça kullanılmadıkça ./script_file
ENV'yi değiştirmez export
.
export
, bir komut dosyasının çağrı kabuğunun herhangi bir değişkenini değiştirmesi mümkün değildir. Aynı şey PWD, tanımlanmış takma adlar, işlevler ve bunun gibi şeyler için de geçerlidir. Yalnızca etkileşimli olarak veya bir dosya kaynaklanarak değiştirilebilirler. Ama evet, muhtemelen ilk gün birisi yanacak bir şey değil. :)