Vì những lý do phức tạp, rsync / scp / sftp chạy .bashrc khi kết nối với máy chủ khác. Bạn phải có bất kỳ lệnh nào trong số các lệnh này ở đầu .bashrc :
hoặc
[[ $- != *i* ]] && return
hoặc là
[ -z "$PS1" ] && return
Bất kỳ lệnh nào ở trên sẽ chỉ cho phép thực thi phần còn lại của các lệnh .bashrc cho các phiên tương tác . Theo như tôi biết, bạn không cần chúng cho bất kỳ loại phiên nào khác (và thực sự tôi đã thấy bashrc mặc định từ Arch và Debian sử dụng kỹ thuật này trong bashrc của chúng).
Tuy nhiên, nếu bạn muốn hoang tưởng thêm về việc để các lệnh bashrc của bạn chạy ngay cả đối với các phiên không tương tác, ít nhất bạn nên bọc các lệnh của bashrc để tạo đầu ra như thế này ( tham chiếu ) để chúng chỉ chạy trong các phiên tương tác:
if shopt -q login_shell; then
# this is an interactive session, we _can_ display output
...code that produces output goes here...
fi
Lưu ý rằng những người khác đề xuất các lệnh di chuyển văn bản xuất ra bash_profile của bạn nhưng tôi nghi ngờ liệu điều này có luôn tốt hay không (vì lý do được giải thích ở đây )