ฉันทำงานบน mac และ ssh / tmux เป็นหลักแนบกับเครื่อง Linux เพื่อทำงานของฉัน ฉันมี ssh-agent กำลังทำงานบนเครื่อง Linux ฉันมี
set -g update-environment "SSH_AUTH_SOCK SSH_ASKPASS WINDOWID SSH_CONNECTION XAUTHORITY"
.tmux.conf
ในของฉัน แต่เมื่อใดก็ตามที่ฉันแนบมากับเซสชั่นนี้ฉันต้องทำงาน
tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
เพื่อให้หน้าต่าง tmux ใหม่$SSH_AUTH_SOCK
ตั้งค่าไว้ถูกต้อง ฉันไม่ต้องการทำเช่นนี้ ความคิดใด ๆ
ปรับปรุง
ฉันคิดว่าฉันอธิบายไม่ได้ดี นี่คือฟังก์ชั่นเชลล์ของฉันเพื่อเปิดเชลล์บนเครื่องระยะไกล:
sshh () {
tmux -u neww -n ${host} "ssh -Xt ${host} $*"
}
เมื่อ tmux รันคำสั่ง ssh นี้$SSH_AUTH_SOCK
จะไม่ถูกตั้งค่าแม้ว่าจะถูกตั้งค่าในสภาวะแวดล้อมโลคัลของฉัน ถ้าฉันวางไว้ในสภาพแวดล้อมของ tmux ด้วยsetenv
คำสั่งข้างต้นทุกอย่างทำงานได้ดี คำถามของฉันคือทำไมฉันต้องเรียกใช้คำสั่ง setenv เลย?
อัปเดต 2
ข้อมูลมากกว่านี้:
เมื่อฉันแนบกับเซสชันที่มีอยู่$SSH_AUTH_SOCK
จะไม่ถูกตั้งค่าในสภาพแวดล้อม tmux (หรือสภาพแวดล้อมแบบโกลบอล)
% tmux showenv | grep -i auth_sock
-SSH_AUTH_SOCK
หากฉันตั้งค่าด้วยตนเองสิ่งต่าง ๆ ใช้งานได้:
% tmux setenv SSH_AUTH_SOCK $SSH_AUTH_SOCK
หากฉันถอดและติดตั้งใหม่$SSH_AUTH_SOCK
กลับไปที่ไม่ได้ตั้งค่า
env
คืออะไร