To jest kopia mojego postu z stackoverflow; Zdaję sobie sprawę, że powinienem o to zapytać tutaj ...
Chcę uruchomić skrypt, który zmienia nazwę hosta i natychmiast zaktualizować mój monit bash (zmienna PS1) o prawidłową nazwę hosta. Jak to zrobić?
Prowadzę to
#!/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
W takim terminalu i weź to
[user@host dir]# ./changehost newhostname
[user@host dir]#
Ale chcę tego
[user@host dir]# ./changehost newhostname
[user@newhostname dir]#
Terminal jest odpowiednio aktualizowany tylko wtedy, gdy otworzę nową powłokę.
Próbowałem też to zrobić
export PS1='somestring'; export PS1='[\u@\h \W]\$'
poza skryptem w terminalu i przełącza się na „somestring” iz powrotem, ale nazwa hosta pozostaje niezmieniona. : \
Czy jest możliwe, że \ h jest przechowywany w pamięci na początku procesu i nie można go zmienić po uruchomieniu?
$PS1
z nami swoim prądem ?
export PS1='somestring'; export PS1='[\u@\h \W]\$'
poza skryptem w terminalu i przełącza się on na „somestring” iz powrotem, ale nazwa hosta pozostaje niezmieniona. : \ Czy jest możliwe, że \ h jest przechowywany w pamięci na początku procesu i nie można go zmienić po uruchomieniu?