apa yang dilakukan dengan menambahkan sh?

10

Saya benar-benar baru menggunakan terminal dan saya telah mengikuti panduan secara membabi buta tanpa mengetahui mengapa ada dan apa yang dilakukannya. Meskipun panduan ini membantu saya dalam menginstal vmware player.

ini bekerja untuk saya sejak membuat file dapat dieksekusi, mengklik file, dan menjalankan..hanya mengatakan akses root diperlukan.

sudo sh vmwareplayer.txt (diganti namanya menjadi lebih pendek)

Entah bagaimana saya tahu apa yang sudodilakukan tetapi apa yang shdilakukan? Tanpa itu ia pergi "vmwareplayer.txt tidak ditemukan". Dan untuk file bundel mengapa berakhir dengan .txt?

Gabino Garcia
sumber
Ini adalah juru bahasa
Tachyons
@Tachyons Jika Anda tahu jawaban atas pertanyaan itu, jelaskan lebih detail dan poskan sebagai jawaban! :)
Alvar
Lihat juga pertanyaan terkait dengan jawaban yang menjelaskan secara mendalam tentang penerjemah (seperti sh, bash) dan shebang, dll.
1
@ Mik Ini bukan duplikat dari pertanyaan itu. Ini menanyakan apa yang shada dalam perintah yang memanggil skrip. Pertanyaan itu adalah tentang cara #!kerja di dalam file skrip . Benar-benar berbeda.
Eliah Kagan
@ EliahKagan Ya, saya mungkin terlalu tergesa-gesa untuk menyebutnya sebagai duplikat: Saya seharusnya meletakkan 'terkait, tetapi tidak duplikat' ketika merujuk pada jawaban yang lain. Anda benar seperti biasa; jika Anda ingin meminta moderator untuk membuka kembali itu tidak masalah. Saya sudah memilih untuk membuka kembali.

Jawaban:

15

sh adalah singkatan dari "shell" dan shell adalah interpreter baris perintah yang lama, Unix like. Interpreter adalah program yang mengeksekusi instruksi spesifik yang ditulis dalam bahasa pemrograman atau scripting. Jadi pada dasarnya Anda mengatakan "Jalankan file itu untuk saya".

Anda harus memahami bahwa Linux tidak benar-benar melihat ekstensi file untuk menentukan apa file (atau program) itu. Jadi selama konten dari file itu ditulis dengan cara yang dimengerti oleh penerjemah, itu akan bekerja. Tetapi hanya demi keterbacaan, file-file seperti itu biasanya diberikan ekstensi .sh dan saya tidak tahu apa yang dipikirkan pengembang ketika ia memberikan file itu ekstensi .txt ..

Gladen
sumber
5

Di Ubuntu, shatau /bin/shhanya menunjuk ke dash. shseharusnya menjalankan interpreter perintah default, yang dashuntuk Ubuntu. 1 dash mengacu pada shell Debian Almquist.

Shell adalah penerjemah baris perintah untuk sistem. Ada beberapa kerang lain seperti bash, csh, zshdll Berikut ini adalah kutipan singkat dari halaman manual dari 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.

Ada banyak tutorial tentang cangkang Linux, Anda bisa mulai dengan Artikel Wikipedia ini .

Datang ke pertanyaan Anda, jika Anda menulis sh file, dashmengeksekusi fileuntuk Anda.

menyalakan
sumber
Ini penjelasan yang bagus apa itu sh, tetapi tidak apa yang dilakukannya dalam pertanyaan khusus di atas.
NilsB
Menambahkan beberapa informasi lebih lanjut, itu seharusnya sudah cukup sekarang
nyalakan
1

Hanya satu kata komentar:

sudomengeksekusi perintah dengan rootprivilege. Ketika Anda memanggil sudo vmwareplayer.txtyang jelas berarti "jalankan perintah vmwareplayer.txt dengan akses root" dan gagal, karena tidak ada program seperti itu.

sudo sh commandberarti "jalankan sh commanddengan root privilege"

dan sh commandakan menjalankan perintah di bawah Bourne shell.

Muncul pertanyaan baru. Apa itu kerang? Ini pertanyaan yang lebih panjang dan Anda akan menemukan beberapa info tentang wiki.

Sementara itu, ingat manadalah teman baikmu.

Melon
sumber
1

Saya percaya bahwa tidak ada responden sebelumnya yang menjawab pertanyaan yang sebenarnya Anda tanyakan kepada G., jadi saya akan mencobanya. Menempatkan shketika menjalankan program seperti yang Anda sebutkan, menjalankan program dalam subkulit non-interaktif . Kerang non-interaktif berperilaku berbeda (misalnya inisialisasi ) dari shell interaktif standar yang Anda gunakan saat menjalankan program.

Jujur saya tidak tahu apa efek praktis ini. Seperti yang Anda perhatikan sh vmwareplayer.txtadalah (biasanya) dapat mengeksekusi sesuatu di folder yang sama, di mana cukup mengetik vmwareplayer.txt(biasanya) tidak akan. Itu harus dilakukan lingkungan shell; itu bukan kualitas asli ke shell atau subkulit itu sendiri. Anda tentu saja dapat langsung mengeksekusi program di direktori saat ini sebagai root: sudo ./vmwareplayer.txt. Dalam pengalaman saya ini selalu berhasil sama baiknya sudo sh vmwareplayer.txt. Saya berharap seseorang akan datang dan menjelaskan mengapa subkulit itu kadang-kadang diinginkan.

Garam
sumber
0

The shutilitas adalah interpreter bahasa perintah / perintah yang mengeksekusi perintah membaca dari string baris perintah, standard input, atau file tertentu. Aplikasi memastikan bahwa perintah yang akan dieksekusi diekspresikan dalam bahasa yang dijelaskan dalam Bahasa Perintah Shell.

Sebagai contoh:

Berikut ini mengeksekusi perintah shell dari string: sh -c "cat myfile.txt" yaitu mengeksekusi perintah -cat myfile.txt

Lihat tautan berikut untuk penjelasan mendalam: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html

shivani1494
sumber