BillMaier
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6494
|
Hallo Ihr Spezialisten, Ziel ist es, den FQDN in den Bash-Prompt (PS1) zu schreiben. Aufgrund https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1276796 geht das nicht via \H , obwohl laut Manpage so vorgesehen. Zwei Workarounds kenne ich: $(hostname --fqdn) in die PS-Zeile der bashrc schreiben
den FQDN in die /etc/hosts schreiben
1. ruft halt den Befehl "ständig" oft auf 2. war wohl "früher" nicht empfohlen, ist mittlerweile aber "aufgeweicht" worden: /etc/hostname Historically this file was supposed to only contain the hostname and not the full canonical FQDN. Nowadays most software is able to cope with a full FQDN here. This file is read at boot time by the system initialization scripts to set the
hostname. Variante: 3. den FQDN via hostname --fqdn einmalig in eine Umgebungsvariable schreiben, die von der Bash ausgelesen wird. Sollte ja auch gehen. (Hab ich jetzt nicht getestet, fällt mir gerade erst ein) Welche Variante wäre Eurer Meinung nach die Sauberste/Empfehlenswerteste?
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Hallo! Ich verwende ein Script zur Anzeige des Akkustandes, alles andere ist bei mir "fix". Von den von dir angebotenen Möglichkeiten würde ich die letzte nutzen. $HOSTNAME ist bereits vergeben.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13176
|
BillMaier schrieb:
3. den FQDN via hostname --fqdn einmalig in eine Umgebungsvariable schreiben, die von der Bash ausgelesen wird. Sollte ja auch gehen. (Hab ich jetzt nicht getestet, fällt mir gerade erst ein) Welche Variante wäre Eurer Meinung nach die Sauberste/Empfehlenswerteste?
Du brauchst keine separate Variable: schreib den Hostnamen einfach mittels $(hostname --fqdn) in PS1, wenn Du es setzt.
|
BillMaier
Supporter
(Themenstarter)
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6494
|
rklm schrieb: Du brauchst keine separate Variable: schreib den Hostnamen einfach mittels $(hostname --fqdn) in PS1, wenn Du es setzt.
Das wäre dann Variante 1
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13176
|
BillMaier schrieb: rklm schrieb: Du brauchst keine separate Variable: schreib den Hostnamen einfach mittels $(hostname --fqdn) in PS1, wenn Du es setzt.
Das wäre dann Variante 1
Nur, dass dies nicht stimmt: BillMaier schrieb:
1. ruft halt den Befehl "ständig" oft auf
Das passiert nur, wenn eine neue interaktive Shell gestartet wird.
|
BillMaier
Supporter
(Themenstarter)
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6494
|
rklm schrieb: Das passiert nur, wenn eine neue interaktive Shell gestartet wird.
Genau genommen passiert das jedes Mal, wenn der Prompt aufgerufen wird: docker1.mbr.intern:~# set -x
+ set -x
++ hostname --fqdn
docker1.mbr.intern:~# echo hello
+ echo hello
hello
++ hostname --fqdn
docker1.mbr.intern:~#
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13176
|
BillMaier schrieb: rklm schrieb: Das passiert nur, wenn eine neue interaktive Shell gestartet wird.
Genau genommen passiert das jedes Mal, wenn der Prompt aufgerufen wird:
Dann ist das nicht die Variante, die ich meine! Lies bitte noch einmal.
|
barcc
Anmeldungsdatum: 13. Juli 2007
Beiträge: 696
Wohnort: Dortmund
|
Kommt darauf an, ob man ' oder " verwendet:
barcc:~$ PS1="$(date)"' \$ '
Mi 13. Dez 13:06:46 CET 2017 $
Mi 13. Dez 13:06:46 CET 2017 $
Mi 13. Dez 13:06:46 CET 2017 $
Mi 13. Dez 13:06:46 CET 2017 $ PS1='$(date)'' \$ '
Mi 13. Dez 13:06:56 CET 2017 $
Mi 13. Dez 13:06:57 CET 2017 $
Mi 13. Dez 13:06:58 CET 2017 $
|
BillMaier
Supporter
(Themenstarter)
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6494
|
rklm schrieb: Du brauchst keine separate Variable: schreib den Hostnamen einfach mittels $(hostname --fqdn) in PS1, wenn Du es setzt.
Ich hab es mehrfach gelesen, finde es aber nicht eindeutig. Was meinst du mit "wenn du es setzt"? Beim "Provisioning" abfragen und damit in der .bashrc hard-coden? Geht natürlich auch, nur kann man dann die .bashrc nicht generisch als ganze versionieren.
|
BillMaier
Supporter
(Themenstarter)
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6494
|
barcc schrieb: Kommt darauf an, ob man ' oder " verwendet:
Meine Zeile sieht so aus PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]$(hostname --fqdn)\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' Das Ergebnis ist wie oben beschrieben.
|
barcc
Anmeldungsdatum: 13. Juli 2007
Beiträge: 696
Wohnort: Dortmund
|
BillMaier schrieb: barcc schrieb: Kommt darauf an, ob man ' oder " verwendet:
Meine Zeile sieht so aus PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]$(hostname --fqdn)\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' Das Ergebnis ist wie oben beschrieben.
Dann probier mal das:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]'"$(hostname --fqdn)"'\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13176
|
BillMaier schrieb: rklm schrieb: Du brauchst keine separate Variable: schreib den Hostnamen einfach mittels $(hostname --fqdn) in PS1, wenn Du es setzt.
Ich hab es mehrfach gelesen, finde es aber nicht eindeutig. Was meinst du mit "wenn du es setzt"?
Da, wo Du eine Zuweisung an PS1 machst. Wo sonst setzt Du PS1?
Beim "Provisioning" abfragen und damit in der .bashrc hard-coden? Geht natürlich auch, nur kann man dann die .bashrc nicht generisch als ganze versionieren.
Nein. barcc hat es verstanden.
|
BillMaier
Supporter
(Themenstarter)
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6494
|
Ok, dann waren die '"' jetzt der Trick. Verstanden hab ich es nicht, aber es funktioniert. Vielen Dank Euch!
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13176
|
BillMaier schrieb: Ok, dann waren die '"' jetzt der Trick. Verstanden hab ich es nicht, aber es funktioniert.
Schau doch mal hier.
|
BillMaier
Supporter
(Themenstarter)
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6494
|
Nach dem Artikel und meinem Vorwissen würde '$(hostname --fqdn)' überhaupt nicht ausgewertet, vermutlich muss das also im Kontext der PS-Variable verstanden werden (?) Oder ich steh tatsächlich auf dem Schlauch.
|