นี่เป็นสำเนาโพสต์ของฉันจาก stackoverflow ฉันรู้ว่าฉันควรถามที่นี่ ...
ฉันต้องการเรียกใช้สคริปต์ที่เปลี่ยนชื่อโฮสต์และอัพเดต bash prompt (ตัวแปร PS1) ของฉันทันทีด้วยชื่อโฮสต์ที่เหมาะสม ฉันจะทำให้สิ่งนี้เกิดขึ้นได้อย่างไร
ฉันเรียกใช้สิ่งนี้
#!/bin/bash
# Usage: ./changehost <newhostname>
#Do two sed's to edit the files for persistent hostname change
sed -i s/$(hostname)/$1/g "/etc/hosts"
sed -i s/$(hostname)/$1/g "/etc/sysconfig/network"
#run the hostname command with new hostname to update it
hostname $1
ในเทอร์มินัลอย่างนั้นและรับสิ่งนี้
[user@host dir]# ./changehost newhostname
[user@host dir]#
แต่สิ่งที่ฉันต้องการคือนี่
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
เทอร์มินัลได้รับการอัพเดตอย่างถูกต้องเฉพาะเมื่อฉันเปิดเชลล์ใหม่
ฉันยังพยายามทำ
export PS1='somestring'; export PS1='[\u@\h \W]\$'
ด้านนอกของสคริปต์ในเทอร์มินัลและเปลี่ยนเป็น 'somestring' และย้อนกลับ แต่ชื่อโฮสต์ไม่เปลี่ยนแปลง : \
เป็นไปได้หรือไม่ที่ \ h ถูกเก็บไว้ในหน่วยความจำเมื่อกระบวนการเริ่มต้นและไม่สามารถเปลี่ยนแปลงได้หลังจากเริ่มทำงาน?
$PS1
กับเราหรือไม่
export PS1='somestring'; export PS1='[\u@\h \W]\$'
นอกสคริปต์ในเทอร์มินัลและเปลี่ยนเป็น 'somestring' และย้อนกลับ แต่ชื่อโฮสต์ไม่เปลี่ยนแปลง : \ เป็นไปได้หรือไม่ที่ \ h ถูกเก็บไว้ในหน่วยความจำเมื่อกระบวนการเริ่มต้นและไม่สามารถเปลี่ยนแปลงได้หลังจากเริ่มทำงาน?