Bash prompt su Ubuntu - FQDN (\ H) uguale al nome host (\ h)


14

Abbiamo ambienti separati nel mio posto di lavoro per sviluppo, test, integrazione e stadiazione.

All'interno di questi ambienti, abbiamo sovraccaricato i nomi host in DNS - ad es. Nell'ambiente dev, viene chiamato il web machine primario web1.dev.example.come, nell'ambiente di test, il web machine primario è web1.test.example.com.

Per distinguere le macchine nei diversi ambienti, voglio personalizzare i prompt di bash per visualizzare il nome di dominio completo anziché il solo nome host. Buona e giusta; Dovrei essere in grado di sostituire \hcon \Hin $PS1, giusto? Hmm. Mostrano la stessa identica cosa.

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

In /etc/hostname, ho solo il nome host ( web1). hostnameed hostname -fentrambi restituiscono i risultati corretti ("web1" e "web1.test.example.com" rispettivamente), e ho le voci corrette in /etc/hosts.

Cosa dà?

Questi sono host Ubuntu 10.04, se questo fa la differenza.

Risposte:


18

Prova a usare una chiamata esplicita hostname -fper ottenere il fqdn del sistema

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

per esempio

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

MODIFICARE:

Ulteriori ricerche dimostrano che i contenuti di /etc/hostname(Ubuntu) e /etc/sysconfig/network(CentOS) sono rilevanti. Se l'FQDN è nel file, allora \Hfunziona correttamente.

La pagina man hostname (1) per Ubuntu dice che non dovresti mettere il nome di dominio completo in / etc / hostname ma non fornisce alcuna ragione sul perché.


È un po 'brutto :( Ma funziona. Potrei lasciarlo aperto ancora per un po', sarebbe davvero bello avere una soluzione "pulita".
Ben Williams

Questo sembra essere correlato a debian / ubuntu. Funziona come previsto in centos.
user9517

1
Sì, è sicuramente un problema di Ubuntu. Ho finito per usare la soluzione suggerita; Dovrei davvero segnalarlo come un bug contro Bash in Ubuntu.
Ben Williams,

@BenWilliams: risposta aggiornata con ciò che dovrebbe renderlo meno fugace.
user9517

Ho anche trovato la stessa ambiguità nei documenti di impostazione del nome host di Ubuntu. Non sono sicuro di come risolverlo.
Dogweather,

4

C'è una folle quantità di follia nei nomi di host, brevi e lunghi, e farlo sempre bene è difficile , quindi mi arrendo e faccio tutto usando l'FQDN come nome host ...

Faccio la stessa cosa che fai tu nei miei ambienti, ma abbasso i nomi di dominio completi nel prompt perché so su quale sito mi trovo e risparmia spazio. Ho anche colorato il mio prompt in base all'ambiente, quindi ho un avviso migliore di quando sto facendo qualcosa di "importante". Ho anche separato lo spazio da tutto il resto, per semplificare la copia-pasta pwd. Un frammento dal mio magazzino /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

E, per quanto riguarda la "bruttezza", a chi importa come appare il codice per visualizzare il prompt? È il codice di sola scrittura il più delle volte, comunque.


1
+1 per l'utilizzo del colore.
Saad Masood,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.