สำหรับเหตุผลที่ซับซ้อน rsync / scp / sftp ทำงาน. bashrc เมื่อเชื่อมต่อกับโฮสต์อื่น คุณต้องมีคำสั่งใด ๆ เหล่านี้ที่ด้านบนของ. bashrc ของคุณ :
ทั้ง
[[ $- != *i* ]] && return
หรือ
[ -z "$PS1" ] && return
คำสั่งใด ๆ ข้างต้นจะอนุญาตให้เรียกใช้งานคำสั่ง. bashrc ที่เหลือสำหรับเซสชันแบบโต้ตอบเท่านั้นเท่านั้น เท่าที่ฉันรู้ว่าคุณไม่ต้องการใช้เซสชันประเภทอื่น (และแน่นอนฉันเห็น bashrc เริ่มต้นจาก Arch และ Debian โดยใช้เทคนิคนี้ใน bashrc ของพวกเขา)
อย่างไรก็ตามหากคุณต้องการให้มีความหวาดระแวงเป็นพิเศษเกี่ยวกับการให้คำสั่ง bashrc ของคุณทำงานแม้ในเซสชันที่ไม่มีการโต้ตอบคุณควรห่อคำสั่งของ bashrc ของคุณอย่างน้อยที่สุดซึ่งจะสร้างเอาต์พุตเช่นนี้ ( อ้างอิง )
if shopt -q login_shell; then
# this is an interactive session, we _can_ display output
...code that produces output goes here...
fi
โปรดทราบว่าคนอื่น ๆ แนะนำให้ย้ายคำสั่งที่ส่งข้อความไปยัง bash_profile ของคุณ แต่ฉันมีข้อสงสัยเกี่ยวกับว่าสิ่งนี้ดีเสมอ ( ด้วยเหตุผลอธิบายที่นี่ )