{"id":253,"date":"2025-10-11T10:27:22","date_gmt":"2025-10-11T10:27:22","guid":{"rendered":"https:\/\/qlch.de\/blog\/?p=253"},"modified":"2025-10-11T10:27:22","modified_gmt":"2025-10-11T10:27:22","slug":"bash-completion-in-macos-etc","status":"publish","type":"post","link":"https:\/\/qlch.de\/blog\/2025\/10\/11\/bash-completion-in-macos-etc\/","title":{"rendered":"bash-completion in macOS etc."},"content":{"rendered":"\n<p>Im Gespr\u00e4ch mit Volker kam auf, da\u00df mit bash unter macOS keine hostname completion f\u00fcr bash zu funktionieren scheint, wie man das &#8220;out of the box&#8221; unter Linux gewohnt ist.<\/p>\n\n\n\n<p>Ich nutze die jeweils aktuelle bash dank dem <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noreferrer noopener\">Homebrew Paketmanager<\/a>, vermeide aber tunlichst sie als default-shell f\u00fcr meinen User einzutragen. Ich kann mir leider zu viele corner-cases ausmalen, wo das mal brechen k\u00f6nnte. Also habe ich in den Settings f\u00fcr <a href=\"https:\/\/ghostty.org\/\" data-type=\"link\" data-id=\"https:\/\/ghostty.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">ghostty<\/a> eingetragen, da\u00df ich gerne \/opt\/homebrew\/bin\/bash f\u00fcr neu gestartete Terminal-Fenster h\u00e4tte (das geht auch im von macOS mitgelieferten Terminal.app unter Settings\/General):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>command = \/opt\/homebrew\/bin\/bash\nwindow-height = 25\nwindow-width = 102\nfont-size = 24\nshell-integration-features = sudo<\/code><\/pre>\n\n\n\n<p>(alles au\u00dfer der ersten Zeile nur als weitere Config-Beispiele f\u00fcr ghostty)<\/p>\n\n\n\n<p><br>Man installiert zus\u00e4tzlich zu bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>brew install <a href=\"https:\/\/formulae.brew.sh\/formula\/bash-completion@2\" data-type=\"link\" data-id=\"https:\/\/formulae.brew.sh\/formula\/bash-completion@2\" target=\"_blank\" rel=\"noreferrer noopener\">bash-completion@2<\/a><\/code><\/pre>\n\n\n\n<p>(@2 f\u00fcr bash V4.2+) und hat dann unter $(brew &#8211;prefix)\/etc\/bash_completion.d eine Reihe von Scripts, die bash-completion machen. Da fehlte bei mir eins f\u00fcr ssh (ich vermute, da\u00df bash das inzwischen ohne script im Bauch hat oder das f\u00fcr ssh an anderer Stelle passiert)<\/p>\n\n\n\n<p>Dann mu\u00df man noch ins .bash_profile oder .profile eintragen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;&#91; -r \"$HOMEBREW_PREFIX\/etc\/profile.d\/bash_completion.sh\" ]] &amp;&amp; . \"$HOMEBREW_PREFIX\/etc\/profile.d\/bash_completion.sh\"<\/code><\/pre>\n\n\n\n<p>um die Scripts auch zu sourcen. (Der Output von $(brew &#8211;prefix) findet sich auch in $HOMEBREW_PREFIX und l\u00f6st bei mir auf \/opt\/homebrew auf).<\/p>\n\n\n\n<p>Achtung: wenn Du (wie ich) bislang Dinge in der .profile veranstaltest, werden die nicht mehr ausgef\u00fchrt, sobald Du eine .bash_profile anlegst. Also entweder alles in die .bash_profile oder in die .profile. Halbe halbe funktioniert nicht. z.B. &#8220;brew not found&#8221;, weil die PATH Erweiterung der .profile nicht mehr abgearbeitet wurde.<\/p>\n\n\n\n<p>Um festzustellen, welche Login-Shell f\u00fcr einen User eingetragen ist, findet man viele (nur manchmal funktionierende) L\u00f6sungen wie &#8220;echo $SHELL&#8221;. <br>Der immer funktionierende Weg \u00fcber das GUI ist, in Systemeinstellungen -> User &#8230; die Ctrl-Taste gedr\u00fcckt halten, wenn man den User anklickt und dann &#8220;Advanced Options&#8221; auszuw\u00e4hlen. <br>Wer das cli bevorzugt: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dscl . -read \/Users\/&lt;username> UserShell<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Im Gespr\u00e4ch mit Volker kam auf, da\u00df mit bash unter macOS keine hostname completion f\u00fcr bash zu funktionieren scheint, wie man das &#8220;out of the box&#8221; unter Linux gewohnt ist. Ich nutze die jeweils aktuelle bash dank dem Homebrew Paketmanager, vermeide aber tunlichst sie als default-shell f\u00fcr meinen User einzutragen. Ich kann mir leider zu [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-253","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/posts\/253","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/comments?post=253"}],"version-history":[{"count":2,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/posts\/253\/revisions"}],"predecessor-version":[{"id":256,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/posts\/253\/revisions\/256"}],"wp:attachment":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/media?parent=253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/categories?post=253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/tags?post=253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}