Dấu nhắc Bash trên Ubuntu - FQDN (\ H) giống như tên máy chủ (\ h)


14

Chúng tôi có môi trường riêng biệt tại nơi làm việc của tôi để phát triển, thử nghiệm, tích hợp và dàn dựng.

Trong các env đó, chúng tôi đã quá tải tên máy chủ trong DNS - ví dụ: trong môi trường dev, máy web chính được gọi web1.dev.example.comvà trong môi trường thử nghiệm, máy web chính là web1.test.example.com.

Để phân biệt giữa các máy trong các môi trường khác nhau, tôi muốn tùy chỉnh lời nhắc bash để hiển thị FQDN thay vì chỉ tên máy chủ. Tốt và tốt; Tôi sẽ có thể thay thế \hbằng \Htrong $PS1, phải không? Hừm. Họ cho thấy điều tương tự chính xác.

me@web1:~$ hostname
web1
me@web1:~$ hostname -f
web1.dev.example.com
me@web1:~$ export PS1="\[\u@\h: \w\]\$ "
me@web1: ~$ export PS1="\[\u@\H: \w\]\$ "
me@web1: ~$ 

Trong /etc/hostname, tôi chỉ có tên máy chủ ( web1). hostnamehostname -fcả hai đều trả về kết quả chính xác ("web1" và "web1.test.example.com" tương ứng) và tôi đã có các mục chính xác trong /etc/hosts.

Đưa cái gì?

Đây là các máy chủ Ubuntu 10.04, nếu điều đó tạo ra sự khác biệt.

Câu trả lời:


18

Hãy thử sử dụng một cuộc gọi rõ ràng hostname -fđể có được fqdn của hệ thống

export PS1="\[\u@$(hostname -f): \w\]\$ "

ví dụ

iain$ export PS1="\[\u@$(hostname -f): \w\]\$ "
iain@ub10-04-1.lan: ~$ 

BIÊN TẬP:

Nghiên cứu sâu hơn cho thấy nội dung của /etc/hostname(Ubuntu) và /etc/sysconfig/network(CentOS) có liên quan. Nếu FQDN có trong tệp thì \Hhoạt động chính xác.

Trang người dùng tên máy chủ (1) cho Ubuntu mặc dù nói rằng bạn không nên đặt FQDN trong / etc / tên máy chủ nhưng không đưa ra lý do tại sao.


Điều đó thật là xấu xí :( Nhưng nó vẫn hoạt động. Tôi có thể để nó mở lâu hơn một chút, thật tuyệt khi có một bản sửa lỗi "sạch".
Ben Williams

Điều này dường như có liên quan đến debian / ubfox. Nó hoạt động như mong đợi trong centos.
dùng9517

1
Vâng, đó chắc chắn là một vấn đề Ubuntu. Tôi đã kết thúc bằng cách sử dụng giải pháp đề xuất của bạn; Tôi thực sự nên báo cáo đây là một lỗi chống lại Bash trong Ubuntu.
Ben Williams

@BenWilliams: câu trả lời được cập nhật với những gì sẽ làm cho nó ít hơn.
dùng9517

Tôi cũng thấy rằng sự mơ hồ tương tự trong các tài liệu cài đặt tên máy chủ của Ubuntu. Không chắc làm thế nào để giải quyết nó.
Dogweather

4

Có một số lượng điên rồ điên rồ về tên máy chủ, ngắn và dài, và làm cho nó luôn luôn khó khăn - vì vậy tôi chỉ từ bỏ và làm cho mọi thứ sử dụng FQDN làm tên máy chủ ...

Tôi làm điều tương tự như bạn trong môi trường của tôi, nhưng tôi cắt các FQDN trong lời nhắc vì tôi biết tôi đang truy cập trang web nào và nó tiết kiệm không gian. Tôi cũng mã màu lời nhắc của mình dựa trên môi trường để tôi nhận được cảnh báo tốt hơn khi tôi làm việc gì đó "quan trọng". Tôi cũng tách không gian đường dẫn khỏi mọi thứ khác, để dễ dàng sao chép pwd pasta. Một đoạn trong kho của tôi /etc/profile:

if hostname -f | grep -q '\.stg\.example\.com'; then
  _ROOT_COLOR=33  # yellow
  _USER_COLOR=36  # cyan
else
  _ROOT_COLOR=31  # red
  _USER_COLOR=32  # green
fi

if [ "`id -u`" -eq 0 ]; then
  PS1="\[\033[01;${_ROOT_COLOR}m\]$(hostname -f|sed 's/\.example\.com//')\[\033[01;34m\] \w #\[\033[00m\] "
else
  PS1="\[\033[01;${_USER_COLOR}m\]\u@$(hostname -f|sed 's/\.example\.com//')\[\033[01;34m\] \w $\[\033[00m\] "
fi

Và, theo như "sự xấu xí", ai quan tâm mã để hiển thị lời nhắc trông như thế nào? Dù sao thì nó cũng chỉ viết mã.


1
+1 cho việc sử dụng màu sắc.
Saad Masood

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.