3
`ssh <host>` เป็นเชลล์การเข้าสู่ระบบ แต่ `ssh <host> <command>` ไม่ใช่?
ฉันสังเกตว่าเมื่อฉันเรียกใช้คำสั่งโดยตรงบนโฮสต์ 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 ยังไม่ได้เข้าสู่เครื่องระยะไกลเพื่อดำเนินการคำสั่งหรือไม่