Bagaimana saya bisa tahu (dalam ~/.bashrc
) jika saya menjalankan dalam mode interaktif, atau, katakanlah, mengeksekusi perintah melalui ssh. Saya ingin menghindari pencetakan urutan pelarian ANSI .bashrc
jika itu yang terakhir.
46
Jawaban:
Menurut
man bash
:Jadi Anda bisa menggunakan:
Juga:
Jadi
~/.bashrc
hanya bersumber untuk kerang interaktif. Terkadang, orang sumbernya dari~/.bash_profile
atau~/.profile
yang tidak benar karena mengganggu perilaku yang diharapkan. Jika Anda ingin menyederhanakan pemeliharaan kode yang umum, Anda harus menggunakan file terpisah untuk berisi kode umum dan sumbernya secara independen dari kedua file rc.Lebih baik jika tidak ada output untuk stdout dari
rc
file login seperti~/.bash_profile
atau~/.profile
karena dapat mengganggu operasi yang tepatrsync
misalnya.Bagaimanapun, itu masih ide yang baik untuk menguji interaktivitas karena konfigurasi yang salah mungkin ada.
sumber
[[ $- =~ i ]] && echo interactive
i
~/.bash_profile
atau~/.profile
yang tidak benar karena itu mengganggu perilaku yang diharapkan . Apa yang Anda pikirkan sumber~/.bashrc
dari~/.bash_login
? Karena shell login tidak perlu bersifat interaktif, saya kira itu juga tidak benar.Menggunakan:
sumber
yang
test
alat dapat memeriksa ini (dari halaman manual):Jadi bisa Anda gunakan misalnya:
atau
sumber
bash <<< 'test -t 0 && echo Y || echo X'
menulisY
,bash -c 'test -t 0 && echo Y || echo X'
menulisX
Saya biasanya melihat output dari tty program.
Jika Anda berada di tty, itu akan memberi tahu Anda tty mana Anda berada. Jika Anda tidak dalam mode interaktif, biasanya akan memberi tahu Anda sesuatu seperti "bukan tty".
sumber