GNU/Linux >> Belajar Linux >  >> Linux

Mengapa $shlvl Mulai Pada Level 2 Di Shell Non-login Tapi Pada Level 1 Di Shell Login Di Rhel 7?

Saya menggunakan "Red Hat Enterprise Linux Server rilis 7.1 (Maipo)".
Ketika saya berada di shell non-login, level shell minimum (echo $SHLVL) dimulai pada level minimum 2 dan meningkat dengan sub berturut-turut -shells.
Tetapi ketika saya menggunakan shell-login, level shell minimum (echo $SHLVL) dimulai pada shell minimum level 2 dan meningkat dengan sub-kulit yang berurutan.

[Que.] Mengapa ada perbedaan level shell minimum antara shell login (dimulai pada shell minimum level 1) dan shell non-login (dimulai pada shell minimum level 2)?

Saya menggunakan bash.

Jawaban yang Diterima:

Dari halaman manual bash:

SHLVL bertambah satu setiap kali instance bash dimulai.

Seperti yang Anda lihat, variabel ini tidak terkait dengan fakta apakah itu shell login atau bukan. Itu hanya berarti bash shell Anda telah dimulai oleh bash shell lain. Karena kami tidak tahu persis apa yang Anda lakukan untuk mendapatkan shell Anda, saya tidak bisa mengatakan mengapa Anda memiliki pemanggilan shell bersarang, tetapi berikut adalah beberapa kasus umum:

  • Anda memulai jendela terminal baru dari baris perintah

  • Anda menggunakan beberapa fitur OS untuk memulai jendela terminal baru, dan fitur ini diimplementasikan dengan memulai bash terlebih dahulu yang kemudian menjalankan terminal yang kemudian menjalankan shell baru

  • Anda memiliki bash rekursif panggil .bash_profile Anda yang dijalankan setiap kali SHLVL sama dengan 1 (ini terdengar aneh, tapi saya sudah melihat ini dua kali!)


Linux
  1. Mengapa Pengguna Root Membutuhkan Izin Sudo?

  2. Mengapa Shell Interaktif Pada Shell Login Osx Secara Default?

  3. Mengapa Tidak Ada yang Menggunakan Shell Bourne Sejati Sebagai /bin/sh?

  1. Mengapa Ekspresi Reguler Bekerja Di X Tapi Tidak Di Y?

  2. Perbedaan Antara Shell Login dan Shell Non-login?

  3. Apa yang dilakukan Rackspace di cloud?

  1. Apa Pembacaan File Conf Antara Shell Login dan Non-login?

  2. Mengapa Bashrc Memeriksa Apakah Shell Saat Ini Interaktif?

  3. Mengapa Shell Login 'Sudo -i' Memecah Argumen String Perintah Di Sini-doc?