ฉันสังเกตว่าเมื่อฉันเรียกใช้คำสั่งโดยตรงบนโฮสต์ SSH โดยใช้ssh <host> <command>ไวยากรณ์ฉันเห็นผลลัพธ์ของ.bashrcแต่ไม่ใช่ผลลัพธ์ของ.bash_profile(หรือ.profile)
ตัวอย่างเช่นถ้าฉันวางคำสั่งต่อไปนี้ที่ด้านบนของไฟล์ทั้งสอง
echo ${BASH_SOURCE[0]}
และแหล่งที่มาด้วยตนเอง.bash_profile(ที่มา.bashrcในการเปิด) ฉันจะเห็น
$ . .bash_profile
.bash_profile
.bashrc
นี่เป็นผลลัพธ์เดียวกันกับที่ฉันเห็นว่าฉันลงชื่อเข้าใช้คอมพิวเตอร์เครื่องนี้จากระยะไกลผ่าน SSH โดยใช้ssh <host>รูปแบบของคำสั่ง (และถ้าฉันเก็บไว้ที่.bash_profileอื่นชั่วคราวบรรทัดเหล่านี้จะไม่ถูกสะท้อนเลย)
อย่างไรก็ตามถ้าฉันรันคำสั่งบนเครื่องรีโมตโดยตรงด้วยssh <host> <command>รูปแบบของsshเอาต์พุตจะมีลักษณะดังนี้:
$ ssh <host> echo foo
/home/rlue/.bashrc
foo
ความเข้าใจของฉันอยู่ที่ความแตกต่างระหว่าง.bash_profileและ.bashrcเป็นว่าอดีตเป็นเปลือกหอยเข้าสู่ระบบในขณะที่หลังสำหรับการโต้ตอบและเปลือกหอยที่ไม่เข้าสู่ระบบ
ฉันได้ข้อสรุปดังต่อไปนี้:
ssh <host>แหล่งที่มาเท่านั้น.bash_profileในขณะที่ssh <host> <command>แหล่งข้อมูลเท่านั้น.bashrcซึ่งหมายถึง- อดีตเป็นเปลือกเข้าสู่ระบบและหลังไม่ได้
 
ข้อสรุปเหล่านี้ถูกต้องหรือไม่ เหตุใดจึงssh <host> <command>ถือว่าเป็นเชลล์แบบโต้ตอบและไม่ใช่การเข้าสู่ระบบ SSH ยังไม่ได้เข้าสู่เครื่องระยะไกลเพื่อดำเนินการคำสั่งหรือไม่
.bashrcกำลังโยนข้อผิดพลาดในขณะที่บรรทัดที่คล้ายกัน.bash_profileไม่ใช่ ฉันใช้โอกาสตรวจสอบความคลาดเคลื่อนก่อนแก้ไขบรรทัดที่ละเมิด
                
.bashrc? ไฟล์นั้นไม่ควรสร้างเอาต์พุตใด ๆ เอาต์พุตใด ๆ จาก.bashrcสามารถทำลายเครื่องมือทั้งหมดโดยใช้ ssh เป็นการขนส่งของพวกเขา