Це копія мого допису з stackoverflow; Я розумію, що я мусив це запитати тут ...
Я хочу запустити скрипт, який змінює ім'я хоста та моє оновлення bash (змінна 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 зберігається в пам'яті, коли процес починається, і його не можна змінити після запуску?