Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Arbeitsumgebung und Konfiguration

1 Der which-Befehl

Der Befehl which zeigt den vollständigen Pfad des Kommandos, das übergeben wird:

which <befehlsname>

Gibt man einen Befehl im Terminal ein, sucht die Shell in allen Verzeichnissen der PATH-Variable nach einer Datei mit diesem Namen. which tut dies ebenfalls. Jedoch wird der Befehl nicht ausgeführt sondern sein Speicherort ausgegeben.

Beispiel:

which brew

liefert:

/opt/homebrew/bin/brew

Wird nach einem Shell-Builtin (einem eingebauten Befehl, welcher kein separates Programm ist) wie beispielsweise cd oder echo gesucht, wird folgendes ausgegeben:

cd: shell built-in command

Vergleich mit ähnlichen Befehlen:

BefehlZweck
which <cmd>Zeigt, wo auf dem Dateisystem ein ausführbares Programm gefunden wird.
command -v <cmd>Zeigt, wie die Shell den Befehl auflöst (auch für Builtins/Aliase).
type <cmd>Noch detailliertere Information über den Befehlstyp.

2 Umgebungsvariablen

Anzeige einer Umgebungsvariable:

echo $PATH

Erweiterung von $PATH:

export PATH=$PATH:/usr/local/bin

2.1 Dauerhafte Speicherung

Nach einem Neustart sind zusätzlich hinzugefügte Pfade jedoch wieder weg. Sollen sie dauerhaft in der PATH-Variable bleiben, muss der export-Befehl in die .zshrc-Datei geschrieben werden (siehe auch Abschnitt “Die .zshrc-Datei”).

Wird die .zshrc-Datei jedoch mehr neugeladen (source ~/.zshrc), werden zusätzliche Pfade erneut hinzugefügt und kommt somit mehrfach vor. Die kann zu Problemen führen. Dieses Verhalten vermeidet man, indem vorher geprüft wird, ob der Pfad schon vorhanden ist:

# --- Custom PATH entries ------------------------------------------

# Define paths in array
CUSTOM_PATHS=(
	"/Applications/Visual Studio Code.app/Contents/Resources/app/bin"
	# "/add/additional/paths/here" (without comma; semicolon)
)

# Add all paths from CUSTOM_PATHS to PATH if it doesn't exist
for dir in "${CUSTOM_PATHS[@]}"; do
	if [-d "$dir" && ":$PATH:" != *":$dir:"*](-d%20"$dir"%20&&%20":$PATH:"%20!=%20*":$dir:"*.md); then
		export PATH="$PATH:$dir"
	fi
done

# ------------------------------------------------------------------

2.2 ~ vs. $HOME

SymbolBedeutungTypBeispielwert
~Kürzel für das Home-Verzeichnis des aktuellen BenutzersShell-Abkürzung (Shell Expansion)/Users/max
$HOMEUmgebungsvariable, die den Pfad zum Home-Verzeichnis enthältVariable im Shell-Umfeld (Environment Variable)/Users/max

*~ (Tilde):

  • Wird von der Shell (zsh, bash etc.) automatisch expandiert.
  • Funktioniert nur an positionsabhängigen Stellen (z.B. nicht innerhalb von Anführungszeichen “ “).
  • Wird häufig für Navigation verwendet:
cd ~
cd ~/Downloads
ls ~

Die Shell ersetzt ~ intern automatisch durch /Users/<username>.

Sonderformen:

~user  # Home-Verzeichnis eines anderen Users (wenn zugreifbar)
~+     # aktuelles Verzeichnis
~-     # vorheriges Verzeichnis

$HOME:

  • Eine Umgebungsvariable, die den kompletten Pfad enthält.
  • Wird von Programmen, Skripten und Konfigurationsdateien benötigt.
  • Funktioniert auch innerhalb von Strings und Skripten:
echo $HOME
cd $HOME/Documents
export PATH="$PATH:$HOME/bin"

In vielen Programmen ist $HOME die bevorzugte Form, weil sie immer eindeutig ist, auch wenn die Shell keine Tilde-Ersetzung durchführt.

note

Zusammenfassung:

  • ~ = Komfortabler Shell-Shortcut für das persönliche Verzeichnis
  • $HOME = Variable, die das Home-Verzeichnis systemweit speichert
  • Funktional oft identisch, technisch jedoch unterschiedlicher Mechanismus

3 Die .zshrc-Datei

Die Datei .zshrc ist die zentrale Konfigurationsdatei der Z-Shell (zsh). Sie wird bei jedem Start eines neuen interaktiven Terminalfensters automatisch geladen und ausgeführt. Darin lassen sich Befehle, Einstellungen, Umgebungsvariablen und Aliase dauerhaft speichern.

3.1 Speicherort

Die Datei liegt standardmäßig im Home-Verzeichnis des Benutzers:

~/.zshrc

Sollte sie nicht existieren, kann sie wie folgt erstellt werden:

touch ~/.zshrc

3.2 Zweck

In dieser Datei steht alles, was bei einem Terminalstart automatisch ausgeführt werden soll.

TypBeispiel
Aliasealias ll='ls -lah'
Umgebungsvariablenexport PATH="/opt/homebrew/bin:$PATH"
Eigene Funktionengreet() { echo "Hallo $USER"; }
Prompt-AnpassungenPROMPT='%n@%m %1~ %# '
Themen / Plugins (oh-my-zsh)source $ZSH/oh-my-zsh.sh
Autostart von Toolseval "$(brew shellenv)"

3.3 Änderungen übernehmen

Damit Änderungen wirksam werden, muss das Terminal neugestartet oder die Datei neugeladen werden.

Neuladen von ~/.zshrc:

source ~/.zshrc

Nützliches Aliase zum Bearbeiten und Neuladen von ~/.zshrc:

alias editrc="nano ~/.zshrc"
alias reloadrc="source ~/.zshrc"

3.4 Vergleich mit anderen Startdateien

DateiLadezeitpunktBeschreibung
~/.zshrcbei jedem neuen interaktiven Shell-StartHauptdatei für zsh-Konfiguration
~/.zprofilenur Login-Shellsähnlich wie .bash_profile, selten nötig
~/.zloginam Ende einer Login-Shellwird nach .zprofile geladen
~/.zshenvimmer, auch bei nicht-interaktiven Shellsfür globale Umgebungsvariablen
~/.zlogoutbeim Verlassen einer Login-ShellAufräumarbeiten (z. B. Logs, Cache)

note

Die .zshrc ist das Herzstück der Shell-Konfiguration. Alles, was in jedem Terminal automatisch verfügbar sein soll – Aliase, PATH, Funktionen, Themes – gehört in diese Datei.

tip

Verschieben der .zshrc:

Die .zshrc kann wie folgt verschoben und durch einen Symlink ersetzt werden (z. B. wenn sie teil eines Repositories werden soll):

mv ~/.zshrc ~/dotfiles/zshrc
ln -s ~/dotfiles/zshrc ~/.zshrc

Skript einbinden

. ~/.config/zsh/aliases.zsh