GNU/Linux >> Belajar Linux >  >> Linux

Apa itu Subkulit di Linux?

Anda sudah mengetahui shell. Ini adalah program yang memungkinkan Anda menjalankan perintah di Linux. Interaksi utama Anda dengan shell adalah ketika Anda menjalankan perintah di terminal.

Cepat atau lambat, Anda akan menemukan istilah yang disebut 'subkulit' dan itu mungkin membingungkan Anda.

Apa itu subkulit?

Subkulit pada dasarnya adalah cangkang baru hanya untuk menjalankan program yang diinginkan. Subkulit dapat mengakses variabel global yang ditetapkan oleh 'cangkang induk' tetapi bukan variabel lokal. Setiap perubahan yang dibuat oleh subkulit ke variabel global tidak diteruskan ke cangkang induk.

Apakah itu masuk akal? Mungkin tidak. Biarkan saya menjelaskan hal-hal secara rinci dengan contoh.

Berikut skrip satu baris yang menampilkan nilai variabel 'var'.

echo $var

Saya menetapkan nilai variabel ini ke LHB, menurut Anda apa yang akan ditampilkan ketika skrip dijalankan?

Kejutan! Script tidak melihat nilai variabel var Saya telah mengatur sebelumnya.

Skrip shell dijalankan dalam subkulit (secara default)

Mengapa? Karena ketika Anda menjalankan skrip shell, skrip tersebut berjalan ke dalam shell-nya sendiri. Karena shell ini berasal dari shell lain (tempat Anda menyetel variabel dan tempat Anda menjalankan skrip), ini disebut subkulit.

Skrip shell tidak dapat melihat nilai variabel karena merupakan variabel lokal, dan tidak diketahui oleh shell yang baru dibuat. Jika Anda ingin variabel diakses oleh subkulitnya, Anda harus menggunakan perintah ekspor dan mengubahnya menjadi variabel global.

Anda juga dapat membuat subkulit dengan meluncurkan cangkang baru dari cangkang yang ada. Jalankan saja bash dan Anda akan berada di subkulit. Anda dapat menggunakan perintah exit untuk menutup/keluar dari shell dan kembali ke shell asli.

Jangan menganggap subkulit sebagai jendela terminal baru. Saya tahu ini sulit untuk divisualisasikan tetapi begitulah adanya.

Saya menggunakan variabel untuk menunjukkan perbedaan antara dua cangkang (induk dan subkulit). Variabel var tidak diekspor dalam kasus ini dan karenanya tidak diketahui oleh subkulit.

Subkulit bersarang

Anda juga dapat membuat subkulit bersarang, dengan cara yang sama. Setelah variabel diekspor, variabel tersebut tetap diekspor ke semua subkulit yang dibuat selanjutnya.

Anda dapat mengubah nilai variabel yang diekspor dalam subkulit. Nilai yang diubah akan diteruskan ke subkulit berikutnya (karena variabel itu sendiri adalah subkulit global) tetapi jika Anda keluar darinya dan kembali ke kulit asli, nilai asli dipertahankan.

Mengapa? Karena nilai variabel yang diekspor disalin ke subkulit. Dan salinannya yang diubah (dari LHB ke HOC). Nilai aslinya tetap sama di kulit induk.

Jadi ingatlah ini, tidak ada cara untuk mengubah nilai variabel di shell induk dari dalam subkulit . Tidak masalah jika Anda mengekspor variabel atau tidak, variabel tidak akan diubah di shell induk.

Kiat Bonus:Jalankan skrip shell di shell saat ini

Perilaku normalnya adalah skrip shell dieksekusi di shell-nya sendiri, yaitu subkulit.

Anda dapat mengubah perilaku ini dan menjalankan skrip shell di shell saat ini berkat perintah shell bawaan yang disebut dot (.).

Tidak, ini tidak sama dengan menjalankan skrip shell seperti ini ./script. Sebaliknya, Anda menjalankannya seperti ini:

. script

Dengan cara ini, perintah dari skrip dieksekusi oleh shell saat ini seolah-olah diketik ke terminal alih-alih dijalankan melalui skrip di subkulit. Skrip dapat mengakses variabel lokal dengan cara ini.

Saya pikir itu informasi yang cukup baik tentang subkulit di Linux.

Apakah Anda memiliki pemahaman yang lebih baik tentangnya sekarang atau Anda lebih bingung dari sebelumnya? Jangan ragu untuk mengekspresikan diri Anda dalam komentar sebagai anggota LHB.


Linux
  1. Mengapa Variabel Terlihat Dalam Subkulit?

  2. Cara Mengganti Shell di Linux

  3. UNIX / Linux :Apa itu Shell? Apa Shells yang berbeda?

  1. Cara mengatur variabel $PATH Anda di Linux

  2. Apa itu pengguna Linux?

  3. Apa yang dilakukan % di string shell Linux?

  1. Apa itu Umask di Linux?

  2. Apa saja Jenis Shell yang Berbeda di Linux?

  3. Apa itu Red Hat Linux?