Bu soruyu bu sitede gördüm ve bu da bu soruyu sormamı istedi. Unix bilmek istiyorum yürütülebilir ve kabuk komut dosyası arasındaki fark nedir?
Bu soruyu bu sitede gördüm ve bu da bu soruyu sormamı istedi. Unix bilmek istiyorum yürütülebilir ve kabuk komut dosyası arasındaki fark nedir?
Yanıtlar:
Yürütülebilir bir dosya, yürütülebilir bit kümesine sahip olan ve programın gerçek çalışmasında hatalar olsa bile herhangi bir dosyayı ifade eder.
Bir kabuk komut dosyası özeldir tipi kullanarak bir kabuk tarafından yorumlanması amaçlanmıştır yürütülebilir #!
tercüman belirtmek için yönergesi.
Bir komut hangi bir dosyadır:
Bir kabuk komut dosyası olan tercüman bir bir script kabuk . Unix dünyasında “kabuk”, Bourne kabuğuna benzeyen mermi ailesini ifade eder ; modern bu kabuklar (kül, bash, ksh, zsh,…) POSIX kabuk standardına uygundur. Daha genel olarak, “kabuk” kelimesi csh, tcsh, balık, vb. Gibi diğer komut yorumlayıcılarını içerebilir.
Bir yürütülebilir çalıştırılabilir herhangi dosyasıdır. Etkili bir şekilde yürütülebilir olması için bir dosyanın iki özelliğinin olması gerekir:
ls -l
: x
karakter izin sütununda bulunmalıdır.Dosyanın formatı, sistemin yürütülebilir olarak tanıdığı bir format olmalıdır. Yürütülebilir biçimler birkaç kategoriye ayrılabilir:
#!
bir dosyadır. Böyle bir dosyayı yürütmek için çekirdek yorumlayıcı programını yürütür ve komut dosyasının yolunu bağımsız değişken olarak iletir.Yürütülebilir olmanın sisteme bağlı olduğunu unutmayın. Örneğin, bir amd64 Linux ikili dosyası, bir amd64 Linux sisteminde yürütülebilir ancak 32 bit sistemde çalıştırılamaz. Android için bir ikili dosya normal bir Linux kurulumunda çalıştırılamaz. Bir Windows yürütülebilir dosyası yalnızca Wine varsa Linux'ta yürütülebilir. İle başlayan bir komut dosyası #!/usr/local/bin/ruby
yalnızca adresinde bir program varsa yürütülebilir /usr/local/bin/ruby
.
Kabuk betiği genellikle yürütülebilir. Ancak, yürütme izniniz yoksa, çalıştırılamaz olabilir. Yine de açık bir şekilde tercümana ileterek yorumlamasını sağlayabilirsiniz (örn. bash /path/to/script
) - “yorumlansın” “uygula” demenin süslü bir yoludur.
Kabuk-komut dosyası:
Kabuk betiği, bir kabuk tarafından yorumlanacak bir komut dizisidir (Genellikle sh veya sh uyumlu bir kabuk, bazen başka bir kabuk).
Komut dosyası adı ".sh" veya ".bash" veya ".csh" vb. İle sonlandırılabilir, ancak bu zorunlu DEĞİLDİR (başlatılması gereken kabuğa ilişkin bir ipucu verir).
Anlaşılır olması için şunu söyleyeceğim: komut dosyası adının script
ve başlatılması gereken kabuğun olduğunu bash
.
Kabukta başlatmanın tipik bir yolu şöyle olur: bash /absolute/path/to/the/script
veya bash ./relative/path/to/the/script
. Bu şekilde, çalıştırılabilir bitin ayarlanmasına gerek yoktur, çünkü yalnızca bash tarafından okunur ve içeriği çalıştırır.
Aynı yapabilirsiniz ayrıca ayarlanmalıdır + x (çalıştırılabilir) ile mevcut kabuk oturumu doğrudan başlatmak için izin vermek: / mutlak / / yol / / script (veya ./relative/path/to/the/script). Dikkat: varsayılan olarak, bu şekilde başlatıldığında, yazdığınız kabuk veya bir posix kabuğu aracılığıyla (davranış işletim sistemine bağlıdır) başlatılır , bu nedenle çalıştırılması gereken kabuk olmayabilir. Bu yüzden komut dosyasının ilk satırı olarak belirtebilirsiniz (ve belirtmelisiniz): #! / Path / to / good / shell, işletim sisteminize bu komut dosyasının gerçekten / path / to / good / shell tarafından başlatılması gerektiğini belirtir.
yürütülebilir:
Yürütülebilir dosya tarafından başlatılması gereken kullanıcı (lar) / grup (lar) için "x" biti ayarlanmış bir dosyadır. Genellikle bir "ikili" veya bir komut dosyası olabilir.
İpucu: file /some/file
size dosyanın içeriği hakkında daha fazla bilgi verebilir. Deneyin file /usr/bin/bash
veya file /etc/profile
bazı örnekleri görmek için.