Bash-запит на Ubuntu - FQDN (\ H) те саме, що ім'я хоста (\ h)


14

На моєму робочому місці у нас є окремі середовища для розробки, тестування, інтеграції та постановки.

У межах envs ми перевантажили імена хостів у DNS - наприклад, у середовищі розробників викликається первинна веб-машина web1.dev.example.com, а в тестовому середовищі - первинна веб-машина web1.test.example.com.

Щоб розрізняти машини в різних середовищах, я хочу налаштувати підказки bash для відображення FQDN, а не просто ім'я хоста. Ну і добре; Я повинен бути в змозі замінити \hз \Hв $PS1, НЕ так? Хм. Вони показують точно те саме.

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

У /etc/hostnameмене є тільки ім'я хоста ( web1). hostnameі hostname -fобидва повертають правильні результати ("web1" і "web1.test.example.com" відповідно), і я отримав правильні записи в /etc/hosts.

Що дає?

Це хости Ubuntu 10.04, якщо це має значення.

Відповіді:


18

Спробуйте скористатися явним викликом, hostname -fщоб отримати fqdn системи

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

напр

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

Редагувати:

Подальші дослідження показують, що вміст /etc/hostname(Ubuntu) та /etc/sysconfig/network(CentOS) є релевантним. Якщо FQDN є у файлі, то він \Hпрацює правильно.

Хоча сторінка "Ім'я хоста" (1) для Ubuntu говорить, що ви не повинні ставити FQDN в / etc / hostname, але не дає причин, чому.


Це якось потворно :( Але це працює. Я можу залишити це відкритим на трохи довше, було б дуже приємно мати «чистий» виправлення.
Бен Вільямс

Схоже, це пов’язано з debian / ubuntu. Це працює, як очікувалося в центсах.
користувач9517

1
Так, це, безумовно, проблема Ubuntu. Я закінчила використання запропонованого рішення; Я дійсно повинен повідомити про це як помилку проти Bash в Ubuntu.
Бен Вільямс

@BenWilliams: оновлена ​​відповідь з тим, що повинно зробити її менш пустотливою.
користувач9517

Я також виявив таку ж неоднозначність у документах із встановленням імені хостів Ubuntu. Не знаєте, як це вирішити.
Dogweather

4

Існує божевільна шаленість щодо імен хостів, коротких і тривалих, і правильно все це важко - тому я просто відмовляюся і змушую все використовувати FQDN як ім'я хоста ...

Я роблю те ж саме, що і ви в моєму середовищі, але я скорочую FQDN підказки, оскільки я знаю, на якому сайті я перебуваю, і це економить місце. Я також кольоровий код мого підказки, заснований на оточенні, щоб я отримав краще попередження про те, коли я роблю щось десь "важливе". Я також розділяю шлях від усього іншого, щоб полегшити копіювання-пасту pwd. Фрагмент з мого запасу /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

І що стосується "потворності", кого цікавить, як виглядає код для відображення підказки? У будь-якому випадку це код лише для запису.


1
+1 для використання кольору
Саад Масуд

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.