Im Gespräch mit Volker kam auf, daß mit bash unter macOS keine hostname completion für bash zu funktionieren scheint, wie man das “out of the box” unter Linux gewohnt ist.
Ich nutze die jeweils aktuelle bash dank dem Homebrew Paketmanager, vermeide aber tunlichst sie als default-shell für meinen User einzutragen. Ich kann mir leider zu viele corner-cases ausmalen, wo das mal brechen könnte. Also habe ich in den Settings für ghostty eingetragen, daß ich gerne /opt/homebrew/bin/bash für neu gestartete Terminal-Fenster hätte (das geht auch im von macOS mitgelieferten Terminal.app unter Settings/General):
command = /opt/homebrew/bin/bash
window-height = 25
window-width = 102
font-size = 24
shell-integration-features = sudo
(alles außer der ersten Zeile nur als weitere Config-Beispiele für ghostty)
Man installiert zusätzlich zu bash
brew install bash-completion@2
(@2 für bash V4.2+) und hat dann unter $(brew –prefix)/etc/bash_completion.d eine Reihe von Scripts, die bash-completion machen. Da fehlte bei mir eins für ssh (ich vermute, daß bash das inzwischen ohne script im Bauch hat oder das für ssh an anderer Stelle passiert)
Dann muß man noch ins .bash_profile oder .profile eintragen:
[[ -r "$HOMEBREW_PREFIX/etc/profile.d/bash_completion.sh" ]] && . "$HOMEBREW_PREFIX/etc/profile.d/bash_completion.sh"
um die Scripts auch zu sourcen. (Der Output von $(brew –prefix) findet sich auch in $HOMEBREW_PREFIX und löst bei mir auf /opt/homebrew auf).
Achtung: wenn Du (wie ich) bislang Dinge in der .profile veranstaltest, werden die nicht mehr ausgeführt, sobald Du eine .bash_profile anlegst. Also entweder alles in die .bash_profile oder in die .profile. Halbe halbe funktioniert nicht. z.B. “brew not found”, weil die PATH Erweiterung der .profile nicht mehr abgearbeitet wurde.
Um festzustellen, welche Login-Shell für einen User eingetragen ist, findet man viele (nur manchmal funktionierende) Lösungen wie “echo $SHELL”.
Der immer funktionierende Weg über das GUI ist, in Systemeinstellungen -> User … die Ctrl-Taste gedrückt halten, wenn man den User anklickt und dann “Advanced Options” auszuwählen.
Wer das cli bevorzugt:
dscl . -read /Users/<username> UserShell