[]
adalah pintasan test
perintah.
Menurut man test
:
-t FD
Benar jika FD adalah deskriptor file yang dikaitkan dengan terminal.
Jadi jika Anda menjalankan bash sebagai shell interaktif (terminal - lihat utas ini untuk penjelasan terminologi), bash akan diganti oleh zsh.
Lebih lanjut tentang file .bash *:
Ketika bash dipanggil sebagai shell login interaktif , atau sebagai
shell non-interaktif dengan opsi --login , ia pertama kali membaca dan menjalankan 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. Opsi --noprofile dapat digunakan ketika shell mulai menghambat perilaku ini.
Ketika shell login keluar , bash membaca dan mengeksekusi perintah dari file ~ / .bash_logout dan /etc/bash.bash_logout, jika file tersebut 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.
Stéphane Chazelas berkomentar:
Perhatikan bahwa shell dapat interaktif tanpa stdout menjadi terminal, dan shell dapat non-interaktif dengan terminal di stdout (seperti setiap kali Anda menjalankan skrip di dalam terminal tanpa mengarahkan / memipipkan outputnya), dan bash
dapat baca .bashrc
bahkan ketika tidak interaktif (seperti di ssh host cmd
mana bash
shell login pengguna di host, atau bash --login -c 'some code'
). case $- in *i*)...
adalah cara yang benar untuk menguji apakah shell bersifat interaktif.
bash
dapat membaca.bashrc
bahkan ketika tidak interaktif (seperti dissh host cmd
manabash
shell login pengguna di host, atau dibash --login -c 'some code'
mana.bash_profile
sumbernya.bashrc
).case $- in *i*)...
adalah cara yang benar untuk menguji apakah shell bersifat interaktif.