Tôi đã thay đổi tên máy chủ của mình, tại sao dấu nhắc bash PS1 của tôi không thay đổi


21

Tôi đã thay đổi tên máy chủ của mình bằng cách chỉnh sửa / etc / tên máy chủ và có thể thấy tên máy chủ mới bằng cách sử dụng các lệnh hostnamehostname -F.

Nhưng dấu nhắc shell vẫn hiển thị tên máy chủ cũ.

Đây là Ubuntu 11.0.4. Lời nhắc được đặt trong tôi .bashrcmà tôi chưa chỉnh sửa. Đăng xuất và thậm chí khởi động lại không có hiệu lực.

Phần có liên quan của Ubuntu tiêu chuẩn .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 không được đặt khi tôi đăng nhập ...)

Tôi đoán tên máy chủ được chọn bởi ký tự đặc biệt \ h.

Đây là cài đặt PS1 như được báo cáo trong trình bao:

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

Và đây là những gì PS1 thể hiện:

username@oldhostname:~$ 

Tôi đã lặp lại quá trình sử dụng lệnh chính xác trong câu trả lời của Warren. Hóa ra tên máy chủ hoạt động cho đến khi khởi động lại nhưng sau đó nó bị mất, mặc dù /etc/hostnamecó chứa tên máy chủ mới.


Không echo $PS1thể hiện điều gì?
Keith

@Keith - Tôi đã cập nhật câu hỏi để hiển thị PS1.
Dizzley

Cảm ơn đã cập nhật, điều đó đã ném tôi đi vì tôi không nhớ dhcp có thể làm điều đó bởi vì tôi không bao giờ để nó. Cũng cảm ơn vì đã quay lại và đứng đầu câu hỏi và (cuối cùng) thêm phần chỉnh sửa của bạn làm câu trả lời, chào mừng bạn đến với unix.SE!
Caleb

Câu trả lời:


24

Tôi đang trả lời câu hỏi của riêng tôi, theo các câu trả lời trước đây của Keith và Warren, và giải pháp thực tế. Vấn đề nhận thức là "Tôi đã thay đổi tên máy chủ của mình, tại sao dấu nhắc bash PS1 của tôi không thay đổi?" Vấn đề thực tế là "Tại sao hệ thống của tôi trở lại tên máy chủ cũ khi khởi động lại?"

Câu trả lời trong trường hợp cụ thể này là: DHCP được cấu hình để ghi đè cài đặt cục bộ.

Một cách hiệu quả để thay đổi tên máy chủ

Những điều sau đây có thể áp dụng cho Ubuntu, ymmv .

  1. Thay đổi tên máy chủ liên tục bằng cách chỉnh sửa tệp /etc/hostname.

    echo 'mynewhostname' | sudo tee /etc/hostname
  2. Để thay đổi tên máy chủ cho hệ thống đang chạy, hãy sử dụng lệnh tên máy chủ . Nếu không có Bước 1, điều này sẽ được thiết lập lại khi khởi động lại. Thật hợp lý khi sử dụng giá trị bạn vừa đặt:

    sudo hostname -F /etc/hostname

    hoặc tương đương của nó:

    sudo hostname `cat /etc/hostname`
  3. Đặt tên miền đủ điều kiện (FQDN) trong /etc/hosts.

    Trích đoạn:

    127.0.0.1    mynewhostname.mydomainname.com    mynewhostname
  4. Kiểm tra xem máy có đang chạy máy khách DHCP không. Ngoài địa chỉ IP, máy chủ DHCP cũng có thể ghi đè cài đặt như tên máy chủ và độ phân giải DNS. Dịch vụ lưu trữ "đám mây" có thể thực hiện việc này để hình ảnh của máy trên đĩa có thể được sử dụng lại nhiều lần mà không cần chỉnh sửa tệp cấu hình.

    Nếu nó tồn tại, hãy chỉnh sửa tệp cấu hình máy khách DHCP /etc/default/dhcpcdđể nhận xét SET_HOSTNAMEchỉ thị:

    #SET_HOSTNAME='yes'
  5. Khi có thể, khởi động lại hệ thống và kiểm tra tên đã thay đổi với:

    hostname

Bước 4 là tin tức cho tôi và bắt tôi ra ngoài. Tôi nghĩ rằng nó sẽ hữu ích để ghi lại toàn bộ quá trình trong câu trả lời này. Bước đó là lịch sự của (Linode) hướng dẫn dịch vụ lưu trữ của tôi mà tôi thực sự nên đọc đúng.


Nếu câu trả lời này có vẻ phù hợp, một upvote từ người khác sẽ được đánh giá cao vì tôi không thể bỏ phiếu cho câu trả lời của riêng mình.
Dizzley

2

Tệp /etc/hostnamegiữ bản sao liên tục của tên máy chủ và được sử dụng trong quá trình khởi động để đặt bản sao thời gian chạy. Để thay đổi bản sao thời gian chạy mà không cần khởi động lại, hãy nói:

$ sudo hostname `cat /etc/hostname`

Hoặc chỉ cần chuyển tên máy chủ mới làm tham số cho hostname(1)lệnh.


Vấn đề của tôi là ở sự kiên trì. Tôi đã sử dụng và xác minh tên máy chủ thời gian chạy (xem câu hỏi). Ngoài ra, "sudo hostname -F / etc / hostname" là một dạng thay thế của lệnh (man hostname). Tuy nhiên, tôi đã làm như bạn đề nghị. Tên máy chủ bị mất khi khởi động lại. :( Tôi cũng đã đặt FQDN vào /etc/host.conf và /etc/host.conf được đặt thành chỉ sử dụng liên kết. Tôi vẫn bị thua lỗ.
Dizzley

Tôi đã cập nhật Q với một độ phân giải và sẽ trả lời câu hỏi của riêng tôi sau một thời gian ngắn. Cảm ơn Warren / Keith.
Dizzley

Đó phải là 'Tôi cũng đã đặt FQDN vào / etc / hosts.'
Dizzley

-1

Tôi thấy bạn có /htrong PS1và sau đó đề cập đến FQDN, bây giờ, bạn có thể đăng tên cũ & tên máy chủ mới mà bạn đang cố sử dụng không?

  • /h hiển thị tên máy chủ lên đến đầu tiên '.'
  • /H hiển thị FQDN đầy đủ

hãy thử một lần


Chào njekto. NB không phải là / h. Tôi muốn giữ tên máy chủ của mình ở chế độ riêng tư khi đó là máy chủ sản xuất nên "tên cũ" và "tên mới" (không có dấu chấm). Tôi là một tay già ở Unix nhưng điều này đã làm tôi bối rối - tôi chưa bao giờ thấy dhcpcd được sử dụng như thế này. Có vẻ như dấu nhắc PS1 đã sai, nhưng vấn đề thực sự là / etc / hostname bị ghi đè bởi dhcpcd khi khởi động. Dhcpcd được sử dụng vì hình ảnh máy của tôi có thể được triển khai lại hoặc sao chép vào một thiết lập địa chỉ IP khác để hoster của tôi, Linode, tạo các giá trị mặc định bằng DHCP để mỗi phiên bản hình ảnh Ubunto của tôi là duy nhất. Tôi là người mới bắt đầu đám mây, vì vậy điều này thật thú vị.
Dizzley

-1
  • Viết hoa htrong PS1:

    PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.