Pada dasarnya, apakah shell masuk atau tidak, interaktif atau tidak penting karena satu alasan:
File inisialisasi dan opsi default yang ditetapkan tergantung pada apakah shell masuk atau tidak dan interaktif atau tidak.
Sejalan dengan itu, apakah shell masuk atau tidak atau interaktif atau tidak tergantung pada permintaan yang digunakan - nama dan opsi perintah yang tepat.
Kedua properti itu ortogonal - apakah shell masuk atau tidak tidak ada hubungannya dengan menentukan apakah itu interaktif atau tidak.
Bash memulai shell login jika semua ini benar:
argv[0], nama perintah itu dipanggil sebagai, dimulai dengan a -
- yang
-lpilihan ditentukan
Mirip, bash memulai shell interaktif jika semua ini benar:
- itu tidak ditentukan file untuk dieksekusi (yaitu, perintah itu tidak
bash some/file) atau string perintah untuk menjalankan ( bash -c 'foo') (kondisi sebenarnya sedikit lebih kompleks, lihat manual)
- yang
-ipilihan yang ditentukan
Khususnya (dan secara paradoks), yang terakhir menyiratkan bahwa bash -ic 'foo'memulai shell interaktif.
Jadi yang berikut ini memulai login, shell interaktif, meskipun tidak ada yang interaktif tentangnya dan doa tidak ada hubungannya dengan login:
bash -lic true
Bahwa masuk melalui konsol atau GUI memulai shell login (atau mungkin tidak) sepenuhnya merupakan efek dari proses login menggunakan doa yang sesuai.
Kondisi dan efek dijelaskan secara rinci dalam manual bash, bagian tentang File Startup .
Sumber utama kebingungan adalah bahwa ada arti umum lain untuk shell "login":
Shell login pengguna adalah shell yang didefinisikan dalam passwdentri pengguna tersebut (yang mungkin berasal dari /etc/passwd, LDAP atau sumber lain).
The loginProgram, SSH, dll mulai shell ini sebagai masuk shell dalam arti dimaksud dalam sisa jawabannya - dengan terkemuka -dalam nama perintah, biasanya. Jika Anda ingin sangat membingungkan, Anda dapat mengatakan:
Beberapa proses login memulai shell login pengguna sebagai shell login.
Perhatikan bahwa login GUI memulai shell login murni karena pengembang menganggapnya nyaman - LightDM menjalankan skrip login yang jelas-jelas tidak interaktif dan tentu saja tidak bergantung pada shell login pengguna (dalam arti kedua). Namun, jangan bergantung pada manajer tampilan yang memulai shell login - tidak semuanya, dan pada Wayland dan GNOME, proses login tidak menggunakan skrip shell sama sekali.
non-interactive login shellsalah.