Ubuntu'da Bash istemi - FQDN (\ H) ana bilgisayar adıyla aynı (\ h)


14

İşyerimde geliştirme, test, entegrasyon ve evreleme için ayrı ortamlar var.

Bu ortamlarda, DNS'deki ana bilgisayar adlarını aşırı yükledik - örn. Geliştirme ortamında, birincil web makinesi çağrılır web1.dev.example.comve test ortamında birincil web makinesi kullanılır web1.test.example.com.

Farklı ortamlardaki makineler arasında ayrım yapmak için, bash istemlerini yalnızca ana bilgisayar adı yerine FQDN'yi görüntülemek üzere özelleştirmek istiyorum. İyi ve iyi; Ben yerine gerekir \hile \Hde $PS1sağ? Hmm. Aynı şeyi gösteriyorlar.

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: ~$ 

İçinde /etc/hostname, sadece hostname ( web1) var. hostnameve hostname -fher ikisi de doğru sonuçları döndürür (sırasıyla "web1" ve "web1.test.example.com") ve doğru girişleri aldım /etc/hosts.

Ne oluyor?

Bunlar fark yaratırsa Ubuntu 10.04 ana bilgisayarlarıdır.

Yanıtlar:


18

hostname -fSistemin fqdn'sini almak için açık bir çağrı kullanmayı deneyin

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

Örneğin

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

DÜZENLE:

Daha fazla araştırma, /etc/hostname(Ubuntu) ve /etc/sysconfig/network(CentOS) içeriğinin alakalı olduğunu göstermektedir. FQDN dosyadaysa, \Hdüzgün çalışır.

Ubuntu'nun ana bilgisayar adı (1) kılavuz sayfası, FQDN'yi / etc / hostname içine koymamanız gerektiğini söyler, ancak nedenine ilişkin hiçbir neden vermez.


Bu tür çirkin :( Ama çalışır biraz daha uzun süre bu açık bırakabilir, bir "temiz" düzeltme olması gerçekten güzel olurdu..
Ben Williams

Bu debian / ubuntu ile ilişkili gibi görünüyor. Centos'ta beklendiği gibi çalışır.
user9517

1
Evet, kesinlikle bir Ubuntu problemi. Sonunda önerilen çözümü kullandım; Bunu gerçekten Ubuntu'daki Bash'a karşı bir hata olarak rapor etmeliyim.
Ben Williams

@BenWilliams: daha az çirkin hale getirecek şeyle güncellenmiş cevap.
user9517

Aynı belirsizliği Ubuntu'nun hostname belirleme belgelerinde de buldum. Nasıl çözüleceğinden emin değilim.
Dogweather

4

Ana bilgisayar adları hakkında kısa ve uzun bir çılgınlık var ve her zaman doğru yapmak zor - bu yüzden sadece vazgeçiyorum ve her şeyi FQDN'yi ana bilgisayar adı olarak kullanıyorum ...

Ortamlarımda sizinle aynı şeyi yapıyorum, ancak FQDN'leri istemde kesiyorum çünkü hangi sitede olduğumu biliyorum ve yerden tasarruf sağlıyor. Ben de çevreye dayalı istemimi renk kodlu böylece bir yerde "önemli" bir şey yaptığımda daha iyi bir uyarı var. Ben de makarna kopyalamak kolay hale getirmek için, yol her şeyi diğerlerinden ayırın. Stokumdan bir pasaj /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

Ve "çirkinlik" kadar, istemi görüntülemek için kodun neye benzediğini kimin umurunda? Zaten çoğu zaman salt yazılan bir kod.


1
Renk kullanımı için +1.
Saad Masood

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.