sh eklemek ne yapar?


10

Ben terminali kullanmak için gerçekten yeni ve ben neden orada olduğunu ve ne yaptığını bilmeden körü körüne takip ediyorum ... bu kılavuzlar vmware oynatıcı yükleme konusunda bana yardımcı olmasına rağmen.

Bu dosyayı çalıştırılabilir, dosyayı tıklatıp çalıştırdığından beri benim için çalıştı ve sadece root erişimi gerektiğini söylüyor.

sudo sh vmwareplayer.txt (daha kısa olacak şekilde yeniden adlandırıldı)

Her nasılsa biliyorum sudoama ne shişe yarıyor? Bu olmadan "vmwareplayer.txt bulunamadı" gider. Paket dosyaları için neden .txt ile bitiyor?


Bu bir dil tercümanı
Tachyons

@Takyonlar Sorunun cevabını biliyorsanız, daha ayrıntılı olarak açıklayın ve cevap olarak gönderin! :)
Alvar

Ayrıca, tercümanlar (sh, bash gibi) ve shebangs, vb. Hakkında çok derinlemesine açıklayan cevapları olan ilgili bir soruya bakınız .

1
@Mik Bu, bu sorunun kopyası değil . Bu, shbir komut dosyasını çağıran bir komutta ne yaptığını soruyor . Bu soru bir komut dosyasının içinde nasıl #!çalıştığıyla ilgilidir . Tamamen farklı.
Eliah Kagan

@EliahKagan Evet, muhtemelen bir kopya olarak alıntı yapmak için çok aceleciydim: Diğer cevaba atıfta bulunurken 'ilgili, ancak kopyalamamalıydım'. Her zamanki gibi haklısın; Eğer bir moderatörden tekrar açmasını istemek iyi. Yeniden açılmaya oy verdim.

Yanıtlar:


16

sh "shell" anlamına gelir ve shell eski, Unix benzeri komut satırı yorumlayıcısıdır. Tercüman, bir programlama veya kodlama dilinde yazılmış belirli talimatları yürüten bir programdır. Temelde "Bu dosyayı benim için çalıştır" diyorsunuz.

Dosyanın (veya programın) ne olduğunu belirlemek için Linux'un dosya uzantısına gerçekten bakmadığını anlamalısınız. Bu dosyanın içeriği sh yorumlayıcının anlayacağı şekilde yazıldığı sürece çalışır. Ancak sadece okunabilirlik uğruna, bu tür dosyalara normalde bir .sh uzantısı verilir ve geliştiricinin bu dosyayı bir .txt uzantısı verdiğinde ne düşündüğünü bilmiyorum.


5

Ubuntu'da, shya da /bin/shsadece işaret eder dash. Ubuntu için sholan varsayılan komut yorumlayıcısını çalıştırması gerekiyor dash. 1 dash Debian Almquist kabuğuna atıfta bulunur.

Kabuk, sistem için bir komut satırı yorumlayıcısıdır. Gibi diğer bazı kabukları vardır bash, csh, zshvb İşte adamı sayfasından kısa bir alıntıdır dash:

 The shell is a command that reads lines from either a file or the termi‐
 nal, interprets them, and generally executes other commands.  It is the
 program that is running when a user logs into the system (although a user
 can select a different shell with the chsh(1) command).  The shell imple‐
 ments a language that has flow control constructs, a macro facility that
 provides a variety of features in addition to data storage, along with
 built in history and line editing capabilities.  It incorporates many
 features to aid interactive use and has the advantage that the interpre‐
 tative language is common to both interactive and non-interactive use
 (shell scripts).  That is, commands can be typed directly to the running
 shell or can be put into a file and the file can be executed directly by
 the shell.

Linux kabukları hakkında çok sayıda öğretici var, bu Wikipedia makalesiyle başlayabilirsiniz .

Eğer yazarsanız, Sorunuza geliyor sh file, dashyürütür filesenin için.


Sh'ın ne olduğu iyi bir açıklama, ancak yukarıdaki özel soruda ne yaptığı değil.
NilsB

Biraz daha bilgi eklendi, artık yeterli olmalıdır
tutuşturmak

1

Sadece bir yorum:

sudorootayrıcalıklara sahip bir komut yürütür . Ne zaman sudo vmwareplayer.txtaçıkça "root komutu ile vmwareplayer.txt komutunu çalıştırın" anlamına gelir ve başarısız, çünkü böyle bir program yok.

sudo sh command" sh commandroot ayrıcalıklarıyla çalıştır" anlamına gelir

ve sh commandBourne kabuğu altında bir komut yürütecek.

Yeni bir soru ortaya çıkıyor. Kabuklar nelerdir? Bu daha uzun bir soru ve sanırım wiki hakkında bazı bilgiler bulacaksınız.

Bu arada, hatırla manen iyi arkadaşın.


1

Önceki yanıtlayanlardan hiçbirinin aslında G.'ye sorduğunuz soruyu cevaplamadığına inanıyorum, bu yüzden ona bir atış yapacağım. Araya giren shEğer belirtildiği gibi bir program yürütülürken, bir programı çalıştırır etkileşimli olmayan bir alt kabuğa. Etkileşimli olmayan kabuklar , programı çalıştırırken kullandığınız standart etkileşimli kabuktan farklı davranır (örn. Başlatma ).

Dürüst olmak gerekirse, bunun ne gibi pratik bir etkisi olduğunu bilmiyorum. Fark ettiğiniz gibi sh vmwareplayer.txt(genellikle) aynı klasörde bir şeyler yürütebiliyorsunuz, burada vmwareplayer.txt(genellikle) yazmanız yeterli olmayacak. Bu kabuk ortamını yapmak zorundadır; kabuğa veya alt kabuğa özgü herhangi bir kalite değildir. Elbette geçerli dizinde bir programı root: olarak doğrudan yürütebilirsiniz sudo ./vmwareplayer.txt. Benim tecrübelerime göre bu her zaman olduğu gibi çalışıyor sudo sh vmwareplayer.txt. Birisinin gelip alt kabuğun neden bazen arzu edildiğini açıklamasını umuyordum.


0

Yardımcı shprogram bir komut dili yorumlayıcısı / bir komut satırı dizesinden, standart girdiden veya belirtilen bir dosyadan okunan komutları yürüten bir komuttur. Uygulama, yürütülecek komutların Kabuk Komut Dili'nde açıklanan dilde ifade edilmesini sağlar.

Örneğin:

Aşağıdakiler bir dizeden bir kabuk komutu sh -c "cat myfile.txt" yürütür : yani komutu yürütür--cat myfile.txt

Ayrıntılı açıklama için aşağıdaki bağlantıya bakın: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.