QR Code Business Card

noctus.net

ねぇ、今日はどこに行こうかな?

Archiv für den Tag ‘Shell’

Mingetty und systemd

keine Kommentare

Das von systemd standardmäßig für das Öffnen virtueller Terminals genutzte agetty verfügt verglichen mit mingetty nur über einen sehr beschränkten Funktionsumfang. So ist gerade die Option --autologin von mingetty interessant, wenn man beim Start des Systems automatisch einen Nutzer ohne manuelle Eingaben anmelden möchte. Unter SysVinit ist hierfür folgender Eintrag in der /etc/inittab erforderlich:

1:2345:respawn:/sbin/mingetty --autologin USER tty1

Die Konfiguration unter systemd gestaltet sich dagegen komplett anders, ermöglicht aber eine nicht minder flexible Anpassung:

  1. Die Datei /lib/systemd/system/getty@.service nach /etc/systemd/system kopieren
  2. Die Datei /etc/systemd/system/getty@.service editieren und in der Sektion [Service] die Option ExecStart wie folgt ändern:
    ExecStart=-/sbin/mingetty --autologin USER %I
  3. Ändern des Standard-Symlinks für die Startdefinition des getty-Dienstes auf tty1 (analog für die anderen virtuellen Terminals):
    ln -sf /etc/systemd/system/getty@.service \
    /etc/systemd/system/getty.target.wants/getty@tty1.service

Hiernach kann der Dienst neu gestartet werden. Eine laufende X-Sitzung wird damit allerings auch beendet:

systemctl restart getty@tty1.service

Ab diesem Zeitpunkt wird bei jedem Systemstart der per USER spezifierte Nutzer automatisch angemeldet. Als kleiner Bonus noch eine mögliche Vorgehensweise, um dabei auch automatisch den X-Server zu starten:

if [ -z "$DISPLAY" -a $(tty) = /dev/tty1 ]; then
  startx
fi

Hier wird geprüft, ob noch kein X-Server gestartet wurde (die Umgebungsvariable $DISPLAY ist andernfalls gesetzt) und ob wir uns gerade auf tty1 befinden, von wo aus üblicherweise der erste X-Server gestartet wird. Einzutragen ist das ganze in die ~/.bash_profile, nicht in die ~/.bashrc.

Geschrieben von Mathias

13. Mai 2011 um 22:58

Tags: ,

Shell-Autovervollständigung

keine Kommentare

Um den Umgang mit der Shell zu vereinfachen, habe ich schon seit geraumer Zeit die sofortige Anzeige aller Optionen bei einer mehrdeutigen Autovervollständigung aktiviert. Hierzu genügt folgender Eintrag in der ~/.inputrc:

# If you have this in your /etc/inputrc or ~/.inputrc, you will no longer
# have to hit the <Tab> key twice to produce a list of all possible
# completions.
# A single <Tab>  will suffice.
set show-all-if-ambiguous on

Dazu gesellte sich auch immer gleich die Festlegung der Autovervollständigung auf die Tab-Taste:

TAB:menu-complete

Nun bin ich auch endlich auf einen Hinweis gestoßen, wie man das Gegenstück, das rückwärtige Durchlaufen der Optionen, mittels Shift-Tab erreichen kann:

"\e[Z":menu-complete-backward

Die geliebten Einzeiler präsentieren sich wieder einmal in ganzer Pracht.

Geschrieben von Mathias

18. April 2011 um 23:07

Tags: , ,

Aktueller Befehl im Terminaltitel

keine Kommentare

Ein schönes Feature worauf ich nicht mehr verzichten möchte ist die automatische Anzeige des aktuell ausgeführten Befehls im Titel des Terminals bzw. des Tabs. Dadurch wird die Arbeit mit multiplen Fenstern bzw. Tabs ungemein einfacher. Hier die Umsetzung, einzutragen in die ~/.bashrc:

function reset_prompt_and_title() {
  # Gewünschten Standard-Prompt hier angeben
  PS1='\[\033[0;32m\]\u\[\033[00m\] \[\033[0;33m\]\w\[\033[00m\] \$ '
 
  echo -ne "\e]0;${USER}@${HOSTNAME}: ${PWD}\a"
  # Variante: Die überflüssige Angabe des Home-Verzeichnisses
  #           durch die übliche Tilde ersetzen
  #echo -ne "\e]0;${USER}@${HOSTNAME}: ${PWD/#${HOME}/~}\a"
}
 
# Nur für grafische Terminals gedacht
case "$TERM" in
  xterm*|rxvt*)
    # Eventuelle weitere Kommandos für $PROMPT_COMMAND unbedingt erst
    # nach dieser Zeile anhängen
    PROMPT_COMMAND=reset_prompt_and_title
 
    # Aktuell ausgeführten Befehl in den Terminaltitel schreiben
    trap 'echo -ne "\e]0;$BASH_COMMAND\a"' DEBUG
    ;;
esac

Geschrieben von Mathias

27. August 2010 um 00:58

Tags: ,