Это копия моего поста из 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 сохраняется в памяти при запуске процесса и не может быть изменено после запуска?