web-dev-qa-db-ja.com

ホスト名を変更しましたが、bash PS1プロンプトが変更されないのはなぜですか

/ etc/hostnameを編集してホスト名を変更し、hostnameおよびhostname -Fコマンドを使用して新しいホスト名を確認できます。

ただし、シェルプロンプトには引き続き古いホスト名が表示されます。

ちなみにこれはUbuntu 11.0.4です。プロンプトは、編集していない.bashrcに設定されています。ログアウトして再起動しても効果はありません。

標準のUbuntuの関連セクション.bashrc

if [ "$color_Prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

(ログイン時に$ debian_chrootが設定されていません...)

ホスト名は特殊文字\ hによってピックアップされていると思います。

シェルで報告されるPS1設定は次のとおりです。

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

そして、これがPS1が示すものです:

username@oldhostname:~$ 

私はウォーレンの答えで正確なコマンドを使用してプロセスを繰り返しました。ホスト名は再起動するまで機能しますが、/etc/hostnameに新しいホスト名が含まれていても失われます。

21
Dizzley

キースとウォーレンによる以前の回答と実際の解決策を踏まえて、私は自分の質問に答えています。認識された問題は「ホスト名を変更しましたが、bash PS1プロンプトが変更されないのはなぜですか?」実際の問題は「システムが元に戻った理由」再起動時に古いホスト名に変更しますか?」

この特定の場合の答えは次のとおりです:DHCPはローカル設定を上書きするように構成されています。

ホスト名を変更する効果的な方法

以下は、Ubuntuに適用されます ymmv

  1. /etc/hostnameファイルを編集して、永続的なホスト名を変更します。

    echo 'mynewhostname' | Sudo tee /etc/hostname
    
  2. 実行中のシステムのホスト名を変更するには、hostnameコマンドを使用します。ステップ1がない場合、これは再起動時にリセットされます。設定した値を使用するのは理にかなっています:

    Sudo hostname -F /etc/hostname
    

    または同等のもの:

    Sudo hostname `cat /etc/hostname`
    
  3. 完全修飾ドメイン名(FQDN)を/etc/hostsに設定します。

    抜粋:

    127.0.0.1    mynewhostname.mydomainname.com    mynewhostname
    
  4. マシンがDHCPクライアントを実行しているかどうかを確認します。 DHCPサーバーは、IPアドレスに加えて、ホスト名やDNS解決などの設定をオーバーライドする場合があります。 「クラウド」ホスティングサービスがこれを行う場合があるため、ディスク上のマシンのイメージは、構成ファイルを編集せずに何度も再利用できます。

    存在する場合は、DHCPクライアント構成ファイル/etc/default/dhcpcdを編集して、SET_HOSTNAMEディレクティブをコメント化します。

    #SET_HOSTNAME='yes'
    
  5. 可能な場合は、システムを再起動し、名前が次のように変更されていることを確認します。

    hostname
    

ステップ4は私にとってのニュースであり、私を捕らえました。この回答でプロセス全体を文書化すると便利だと思いました。そのステップは(Linode) 私のホスティングサービスの指示 の厚意によるものです。

24
Dizzley

ファイル_/etc/hostname_はホスト名の永続的なコピーを保持し、起動時にランタイムコピーを設定するために使用されます。再起動せずにランタイムコピーを変更するには、次のように言います。

_$ Sudo hostname `cat /etc/hostname`
_

または、新しいホスト名をパラメーターとしてhostname(1)コマンドに渡します。

2
Warren Young