เมื่อใดก็ตามที่ฉันเข้าสู่ระบบเซิร์ฟเวอร์ Linux ฉันต้องการให้คำสั่งหลายคำสั่งทำงานโดยอัตโนมัติ (ตั้งค่าตัวแปรเปลี่ยนตำแหน่ง ฯลฯ )
สิ่งนี้จะต้องทำในการเข้าสู่ระบบของผู้ใช้ไม่ใช่ในการเริ่มต้นระบบ
ฉันจะตั้งให้ทำเช่นนี้ได้อย่างไร
เมื่อใดก็ตามที่ฉันเข้าสู่ระบบเซิร์ฟเวอร์ Linux ฉันต้องการให้คำสั่งหลายคำสั่งทำงานโดยอัตโนมัติ (ตั้งค่าตัวแปรเปลี่ยนตำแหน่ง ฯลฯ )
สิ่งนี้จะต้องทำในการเข้าสู่ระบบของผู้ใช้ไม่ใช่ในการเริ่มต้นระบบ
ฉันจะตั้งให้ทำเช่นนี้ได้อย่างไร
คำตอบ:
~/.bashrc
ใส่คำสั่งใน ทุกอย่างในนั้นจะถูกดำเนินการทุกครั้งที่คุณเข้าสู่ระบบ
หากคุณต้องการคำสั่งให้ทำงานเมื่อลงชื่อเข้าใช้ผ่านทาง ssh เท่านั้น (แต่ไม่ใช่เมื่อลงชื่อเข้าใช้ทางกายภาพ) คุณอาจทดสอบการมีอยู่ของSSH_CONNECTION
ตัวแปรสภาพแวดล้อมและรันคำสั่งเฉพาะเมื่อคุณพบว่ามีอยู่
เพียงใส่นี่ใน ~ / .bashrc หรือ /etc/bash.bashrc หากคุณต้องการสิ่งนี้สำหรับผู้ใช้ทั้งหมด:
if [[ -n $SSH_CONNECTION ]] ; then
echo "I'm logged in remotely"
fi
screen
ฉันฉันอาจใช้คำตอบของคุณและใส่ที่screen
นั่นแทนเสียงสะท้อน ปัญหาที่เกิดขึ้นคือการสิ้นสุดเซสชันหน้าจอจะกลับสู่พรอมต์ SSH แทนการออกจากระบบ เพียงแค่เขียนความคิดเห็นนี้ให้ฉันคำตอบ แต่: เพิ่มlogout
คำสั่งหลังscreen
คำสั่ง
exec command
จะแทนที่เชลล์ปัจจุบันด้วยสิ่งที่คุณเรียกใช้
หรือคุณสามารถระบุคำสั่งที่จะเรียกใช้ในระหว่างการเรียกใช้ssh
:
$ ssh -t server 'cmd; exec bash -l'
คำสั่งสุดท้ายในรายการควรเริ่มเซสชันแบบโต้ตอบในเชลล์ที่คุณต้องการ หากคุณมีคำสั่งจำนวนมากให้เรียกใช้สร้างไฟล์สคริปต์บนเซิร์ฟเวอร์ SSH ของคุณ
ที่จริงแล้ว~/.ssh/rc
เป็นสถานที่ที่เหมาะสมสำหรับคุณในการเพิ่มคำสั่งให้ทำงานเมื่อคุณลงชื่อเข้าใช้แทนที่จะเป็นผู้ใช้ระบบใด ๆ
~/.ssh/rc
Commands in this file are executed by ssh when the user logs in,
just before the user's shell (or command) is started. See the
sshd(8) manual page for more information.
man bash
)