Đây là một bản sao của bài viết của tôi từ stackoverflow; Tôi nhận ra rằng tôi nên đã hỏi nó ở đây ...
Tôi muốn chạy tập lệnh thay đổi tên máy chủ và cập nhật dấu nhắc bash (biến PS1) ngay lập tức với tên máy chủ phù hợp. Làm thế nào để tôi thực hiện điều này xảy ra?
Tôi chạy cái này
#!/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
Trong một thiết bị đầu cuối như vậy và có được điều này
[user@host dir]# ./changehost newhostname
[user@host dir]#
Nhưng điều tôi muốn là đây
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
Thiết bị đầu cuối được cập nhật đúng cách chỉ khi tôi mở một vỏ mới.
Tôi cũng đã cố gắng làm
export PS1='somestring'; export PS1='[\u@\h \W]\$'
bên ngoài tập lệnh trong thiết bị đầu cuối và nó chuyển sang 'nội địa hóa' và quay lại, nhưng tên máy chủ không thay đổi. : \
Có thể là \ h được lưu trong bộ nhớ khi quá trình bắt đầu và không thể thay đổi sau khi khởi động?
$PS1
với chúng tôi?
export PS1='somestring'; export PS1='[\u@\h \W]\$'
bên ngoài tập lệnh trong thiết bị đầu cuối và nó chuyển sang 'somestring' và quay lại, nhưng tên máy chủ không thay đổi. : \ Có thể là \ h được lưu trong bộ nhớ khi quá trình bắt đầu và không thể thay đổi sau khi khởi động không?