Apa perbedaan antara bash shell 'Login' dan 'Interactive'

50

Apa perbedaan antara bash shell 'Login' dan 'Interactive'? Saya telah mengutip Wikipedia di bawah ini, tetapi adakah yang bisa memberikan jawaban yang lebih baik?

Sunting: Ini adalah wiki komunitas jadi mungkin daripada memilih untuk menutup, Anda bisa memberikan contoh situasi yang memerlukan jenis $ SHELL

Skrip startup

Ketika Bash dimulai, ia mengeksekusi perintah dalam berbagai skrip yang berbeda.

Ketika Bash dipanggil sebagai shell login interaktif, ia pertama kali membaca dan mengeksekusi perintah dari file / etc / profile, jika file itu ada. Setelah membaca file itu, ia mencari ~ / .bash_profile, ~ / .bash_login, dan ~ / .profile, dalam urutan itu, dan membaca serta mengeksekusi perintah dari yang pertama yang ada dan dapat dibaca.

Ketika shell login keluar, Bash membaca dan mengeksekusi perintah dari file ~ / .bash_logout, jika ada.

Ketika shell interaktif yang bukan shell login dimulai, Bash membaca dan mengeksekusi perintah dari ~ / .bashrc, jika file itu ada. Ini dapat dihambat dengan menggunakan opsi --norc. Opsi file --rcfile akan memaksa Bash untuk membaca dan menjalankan perintah dari file daripada ~ / .bashrc.

gyaresu
sumber
Saya telah mengedit pertanyaan agar lebih cocok dengan aturan situs yang setengah dibuat. Saya tidak berpikir saya akan pernah mengerti keinginan untuk menghapus informasi yang bermanfaat ...
Gareth
7
Mengapa orang memilih pertanyaan ini? Tampak sah menurut saya?
duffbeer703
2
Ugh, ambil jawabannya dari pertanyaan Anda, dan poskan itu sebagai jawaban. Tidak apa-apa untuk menjawab pertanyaan Anda sendiri.
derobert
2
Ini adalah pertanyaan yang sangat valid karena perbedaannya membingungkan. Perhatikan misalnya bahwa ketika Anda masuk ke lingkungan grafis melalui xdm dan menjalankan xterm, Anda mendapatkan shell interaktif dan file startup shell login tidak berjalan.
pjc50

Jawaban:

16

Dalam file profil shell login Anda, Anda dapat mengatur beberapa hal yang akan Anda gunakan selama sesi Anda, dan yang hanya perlu dilakukan sekali. Beberapa ide:

  • buat file sementara berisi alamat IP yang Anda sambungkan, nanti Anda bisa memasukkannya dalam beberapa skrip pengaturan aturan firewall.
  • jalankan ssh-agent, minta kunci SSH Anda, dan simpan variabel lingkungan agen SSH dalam file.
  • jika itu adalah mesin terbatas, dan rekan kerja Anda ingin mengetahui satu sama lain login, tulis (1) pesan yang memberi tahu mereka tentang login Anda.

Dalam file shell non-login ( .bashrc) Anda harus mengkonfigurasi shell Anda:

  • Fancy cepat
  • atur alias
  • atur opsi histori
  • tentukan fungsi shell khusus
  • ekspor variabel lingkungan, (mungkin PAGER, EDITOR jika pengaturan seluruh sistem menyedot)
  • memuat variabel ssh-agent yang disimpan di .bash_profile

Biasanya, Anda akan menyertakan .bashrcdari .bash_profileberikut ini. Kemudian shell login mendapatkan semua kustomisasi Anda, dan .bash_profilefile tidak harus menduplikasi hal-hal yang sudah ada .bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc
hayalci
sumber
3
Apakah shell login adalah yang pertama yang dimulai ketika Anda baru di mesin? Semua kerang lain yang Anda buka setelahnya mungkin interaktif atau tidak. Sebuah shell yang berjalan dari cron? Tampaknya tidak interaktif, tetapi apakah ini masuk? Bagaimana jika Anda tidak di mesin? Itulah pertanyaan-pertanyaan yang tidak terjawab
François Beausoleil
4
Sekarang, ITULAH jawaban yang bisa saya mengerti: linuxquestions.org/questions/linux-general-1/…
François Beausoleil