Untuk alasan kompleks rsync / scp / sftp menjalankan .bashrc saat menghubungkan ke host lain. Anda harus memiliki salah satu dari perintah ini di bagian atas .bashrc Anda :
antara
[[ $- != *i* ]] && return
atau
[ -z "$PS1" ] && return
Salah satu dari perintah di atas hanya akan memungkinkan pelaksanaan sisa perintah .bashrc untuk sesi interaktif . Sejauh yang saya tahu Anda tidak membutuhkannya untuk jenis sesi lain (dan memang saya telah melihat bashrc default dari Arch dan Debian menggunakan teknik ini di bashrc mereka).
Namun jika Anda ingin menjadi paranoid ekstra tentang membiarkan perintah bashrc Anda berjalan bahkan untuk sesi non-interaktif, Anda setidaknya harus membungkus perintah-perintah bashrc Anda yang menghasilkan output seperti ini ( referensi ) sehingga hanya berjalan dalam sesi interaktif:
if shopt -q login_shell; then
# this is an interactive session, we _can_ display output
...code that produces output goes here...
fi
Perhatikan bahwa orang lain menyarankan untuk memindahkan perintah yang menampilkan teks ke bash_profile Anda, tetapi saya ragu apakah ini selalu baik (untuk alasan yang dijelaskan di sini )