@fredlackey/devutils 0.0.18 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/README.md +214 -141
  2. package/package.json +8 -83
  3. package/src/api/loader.js +229 -0
  4. package/src/api/registry.json +62 -0
  5. package/src/cli.js +293 -60
  6. package/src/commands/ai/index.js +16 -0
  7. package/src/commands/ai/launch.js +112 -0
  8. package/src/commands/ai/list.js +54 -0
  9. package/src/commands/ai/resume.js +70 -0
  10. package/src/commands/ai/sessions.js +121 -0
  11. package/src/commands/ai/set.js +131 -0
  12. package/src/commands/ai/show.js +74 -0
  13. package/src/commands/ai/tools.js +46 -0
  14. package/src/commands/alias/add.js +93 -0
  15. package/src/commands/alias/helpers.js +107 -0
  16. package/src/commands/alias/index.js +14 -0
  17. package/src/commands/alias/list.js +55 -0
  18. package/src/commands/alias/remove.js +62 -0
  19. package/src/commands/alias/sync.js +109 -0
  20. package/src/commands/api/disable.js +73 -0
  21. package/src/commands/api/enable.js +148 -0
  22. package/src/commands/api/index.js +15 -0
  23. package/src/commands/api/list.js +66 -0
  24. package/src/commands/api/update.js +87 -0
  25. package/src/commands/auth/index.js +15 -0
  26. package/src/commands/auth/list.js +49 -0
  27. package/src/commands/auth/login.js +384 -0
  28. package/src/commands/auth/logout.js +111 -0
  29. package/src/commands/auth/refresh.js +184 -0
  30. package/src/commands/auth/services.js +169 -0
  31. package/src/commands/auth/status.js +104 -0
  32. package/src/commands/config/export.js +224 -0
  33. package/src/commands/config/get.js +52 -0
  34. package/src/commands/config/import.js +308 -0
  35. package/src/commands/config/index.js +17 -0
  36. package/src/commands/config/init.js +143 -0
  37. package/src/commands/config/reset.js +57 -0
  38. package/src/commands/config/set.js +93 -0
  39. package/src/commands/config/show.js +35 -0
  40. package/src/commands/help.js +338 -0
  41. package/src/commands/identity/add.js +133 -0
  42. package/src/commands/identity/index.js +17 -0
  43. package/src/commands/identity/link.js +76 -0
  44. package/src/commands/identity/list.js +48 -0
  45. package/src/commands/identity/remove.js +72 -0
  46. package/src/commands/identity/show.js +65 -0
  47. package/src/commands/identity/sync.js +172 -0
  48. package/src/commands/identity/unlink.js +57 -0
  49. package/src/commands/ignore/add.js +165 -0
  50. package/src/commands/ignore/index.js +14 -0
  51. package/src/commands/ignore/list.js +89 -0
  52. package/src/commands/ignore/markers.js +43 -0
  53. package/src/commands/ignore/remove.js +164 -0
  54. package/src/commands/ignore/show.js +169 -0
  55. package/src/commands/machine/detect.js +122 -0
  56. package/src/commands/machine/index.js +14 -0
  57. package/src/commands/machine/list.js +74 -0
  58. package/src/commands/machine/set.js +106 -0
  59. package/src/commands/machine/show.js +35 -0
  60. package/src/commands/schema.js +152 -0
  61. package/src/commands/search/collections.js +134 -0
  62. package/src/commands/search/get.js +71 -0
  63. package/src/commands/search/index-cmd.js +54 -0
  64. package/src/commands/search/index.js +21 -0
  65. package/src/commands/search/keyword.js +60 -0
  66. package/src/commands/search/qmd.js +70 -0
  67. package/src/commands/search/query.js +64 -0
  68. package/src/commands/search/semantic.js +62 -0
  69. package/src/commands/search/status.js +46 -0
  70. package/src/commands/status.js +224 -171
  71. package/src/commands/tools/check.js +79 -0
  72. package/src/commands/tools/index.js +14 -0
  73. package/src/commands/tools/install.js +110 -0
  74. package/src/commands/tools/list.js +91 -0
  75. package/src/commands/tools/search.js +60 -0
  76. package/src/commands/update.js +83 -112
  77. package/src/commands/util/add.js +151 -0
  78. package/src/commands/util/index.js +15 -0
  79. package/src/commands/util/list.js +97 -0
  80. package/src/commands/util/remove.js +76 -0
  81. package/src/commands/util/run.js +79 -0
  82. package/src/commands/util/show.js +67 -0
  83. package/src/commands/version.js +21 -88
  84. package/src/installers/_template.js +104 -0
  85. package/src/installers/git.js +150 -0
  86. package/src/installers/homebrew.js +190 -0
  87. package/src/installers/node.js +223 -0
  88. package/src/installers/registry.json +29 -0
  89. package/src/lib/config.js +125 -0
  90. package/src/lib/detect.js +74 -0
  91. package/src/lib/errors.js +114 -0
  92. package/src/lib/github.js +315 -0
  93. package/src/lib/installer.js +225 -0
  94. package/src/lib/output.js +239 -0
  95. package/src/lib/platform.js +112 -0
  96. package/src/lib/platforms/amazon-linux.js +41 -0
  97. package/src/lib/platforms/gitbash.js +46 -0
  98. package/src/lib/platforms/macos.js +45 -0
  99. package/src/lib/platforms/raspbian.js +41 -0
  100. package/src/lib/platforms/ubuntu.js +39 -0
  101. package/src/lib/platforms/windows.js +45 -0
  102. package/src/lib/prompt.js +161 -0
  103. package/src/lib/schema.js +211 -0
  104. package/src/lib/shell.js +75 -0
  105. package/src/patterns/gitignore/claude-code.txt +25 -0
  106. package/src/patterns/gitignore/docker.txt +15 -0
  107. package/src/patterns/gitignore/go.txt +24 -0
  108. package/src/patterns/gitignore/java.txt +38 -0
  109. package/src/patterns/gitignore/jetbrains.txt +26 -0
  110. package/src/patterns/gitignore/linux.txt +18 -0
  111. package/src/patterns/gitignore/macos.txt +27 -0
  112. package/src/patterns/gitignore/node.txt +51 -0
  113. package/src/patterns/gitignore/python.txt +55 -0
  114. package/src/patterns/gitignore/rust.txt +14 -0
  115. package/src/patterns/gitignore/terraform.txt +30 -0
  116. package/src/patterns/gitignore/vscode.txt +15 -0
  117. package/src/patterns/gitignore/windows.txt +25 -0
  118. package/src/utils/clone/index.js +165 -0
  119. package/src/utils/git-push/index.js +230 -0
  120. package/src/utils/git-status/index.js +116 -0
  121. package/src/utils/git-status/unix.sh +75 -0
  122. package/src/utils/registry.json +41 -0
  123. package/bin/dev.js +0 -16
  124. package/files/README.md +0 -0
  125. package/files/claude/.claude/commands/setup-context.md +0 -3
  126. package/files/monorepos/_archive/README.md +0 -36
  127. package/files/monorepos/_legacy/README.md +0 -36
  128. package/files/monorepos/ai-docs/README.md +0 -33
  129. package/files/monorepos/apps/README.md +0 -24
  130. package/files/monorepos/docs/README.md +0 -40
  131. package/files/monorepos/packages/README.md +0 -25
  132. package/files/monorepos/research/README.md +0 -29
  133. package/files/monorepos/scripts/README.md +0 -24
  134. package/src/commands/README.md +0 -41
  135. package/src/commands/configure.js +0 -199
  136. package/src/commands/identity.js +0 -1630
  137. package/src/commands/ignore.js +0 -247
  138. package/src/commands/install.js +0 -526
  139. package/src/commands/setup.js +0 -246
  140. package/src/completion.js +0 -284
  141. package/src/constants.js +0 -45
  142. package/src/ignore/claude-code.txt +0 -10
  143. package/src/ignore/docker.txt +0 -18
  144. package/src/ignore/linux.txt +0 -23
  145. package/src/ignore/macos.txt +0 -36
  146. package/src/ignore/node.txt +0 -55
  147. package/src/ignore/terraform.txt +0 -37
  148. package/src/ignore/vscode.txt +0 -18
  149. package/src/ignore/windows.txt +0 -35
  150. package/src/index.js +0 -0
  151. package/src/installs/README.md +0 -399
  152. package/src/installs/adobe-creative-cloud.js +0 -546
  153. package/src/installs/adobe-creative-cloud.md +0 -605
  154. package/src/installs/appcleaner.js +0 -321
  155. package/src/installs/appcleaner.md +0 -699
  156. package/src/installs/apt-transport-https.js +0 -390
  157. package/src/installs/apt-transport-https.md +0 -678
  158. package/src/installs/atomicparsley.js +0 -642
  159. package/src/installs/atomicparsley.md +0 -795
  160. package/src/installs/aws-cli.js +0 -797
  161. package/src/installs/aws-cli.md +0 -727
  162. package/src/installs/balena-etcher.js +0 -710
  163. package/src/installs/balena-etcher.md +0 -761
  164. package/src/installs/bambu-studio.js +0 -1143
  165. package/src/installs/bambu-studio.md +0 -780
  166. package/src/installs/bash-completion.js +0 -575
  167. package/src/installs/bash-completion.md +0 -833
  168. package/src/installs/bash.js +0 -417
  169. package/src/installs/bash.md +0 -993
  170. package/src/installs/beyond-compare.js +0 -603
  171. package/src/installs/beyond-compare.md +0 -813
  172. package/src/installs/brave-browser.js +0 -968
  173. package/src/installs/brave-browser.md +0 -650
  174. package/src/installs/build-essential.js +0 -529
  175. package/src/installs/build-essential.md +0 -977
  176. package/src/installs/ca-certificates.js +0 -618
  177. package/src/installs/ca-certificates.md +0 -937
  178. package/src/installs/caffeine.js +0 -508
  179. package/src/installs/caffeine.md +0 -839
  180. package/src/installs/camtasia.js +0 -596
  181. package/src/installs/camtasia.md +0 -762
  182. package/src/installs/chatgpt.js +0 -476
  183. package/src/installs/chatgpt.md +0 -814
  184. package/src/installs/chocolatey.js +0 -456
  185. package/src/installs/chocolatey.md +0 -661
  186. package/src/installs/chrome-canary.js +0 -419
  187. package/src/installs/chrome-canary.md +0 -641
  188. package/src/installs/chromium.js +0 -667
  189. package/src/installs/chromium.md +0 -838
  190. package/src/installs/claude-code.js +0 -576
  191. package/src/installs/claude-code.md +0 -1173
  192. package/src/installs/cloudflare-warp.js +0 -900
  193. package/src/installs/cloudflare-warp.md +0 -1047
  194. package/src/installs/comet-browser.js +0 -588
  195. package/src/installs/comet-browser.md +0 -731
  196. package/src/installs/curl.js +0 -379
  197. package/src/installs/curl.md +0 -714
  198. package/src/installs/cursor.js +0 -579
  199. package/src/installs/cursor.md +0 -970
  200. package/src/installs/dbeaver.js +0 -924
  201. package/src/installs/dbeaver.md +0 -939
  202. package/src/installs/dbschema.js +0 -692
  203. package/src/installs/dbschema.md +0 -925
  204. package/src/installs/dependencies.md +0 -453
  205. package/src/installs/development-tools.js +0 -600
  206. package/src/installs/development-tools.md +0 -977
  207. package/src/installs/docker.js +0 -1029
  208. package/src/installs/docker.md +0 -1109
  209. package/src/installs/drawio.js +0 -1019
  210. package/src/installs/drawio.md +0 -795
  211. package/src/installs/elmedia-player.js +0 -347
  212. package/src/installs/elmedia-player.md +0 -556
  213. package/src/installs/ffmpeg.js +0 -889
  214. package/src/installs/ffmpeg.md +0 -852
  215. package/src/installs/file.js +0 -464
  216. package/src/installs/file.md +0 -987
  217. package/src/installs/gemini-cli.js +0 -811
  218. package/src/installs/gemini-cli.md +0 -1153
  219. package/src/installs/git.js +0 -400
  220. package/src/installs/git.md +0 -907
  221. package/src/installs/gitego.js +0 -949
  222. package/src/installs/gitego.md +0 -1172
  223. package/src/installs/go.js +0 -931
  224. package/src/installs/go.md +0 -958
  225. package/src/installs/google-antigravity.js +0 -913
  226. package/src/installs/google-antigravity.md +0 -1075
  227. package/src/installs/google-chrome.js +0 -833
  228. package/src/installs/google-chrome.md +0 -862
  229. package/src/installs/gpg.js +0 -480
  230. package/src/installs/gpg.md +0 -1056
  231. package/src/installs/homebrew.js +0 -1028
  232. package/src/installs/homebrew.md +0 -988
  233. package/src/installs/imageoptim.js +0 -968
  234. package/src/installs/imageoptim.md +0 -1119
  235. package/src/installs/installers.json +0 -4032
  236. package/src/installs/installers.json.tmp +0 -3953
  237. package/src/installs/jq.js +0 -400
  238. package/src/installs/jq.md +0 -809
  239. package/src/installs/keyboard-maestro.js +0 -719
  240. package/src/installs/keyboard-maestro.md +0 -825
  241. package/src/installs/kiro.js +0 -864
  242. package/src/installs/kiro.md +0 -1015
  243. package/src/installs/latex.js +0 -789
  244. package/src/installs/latex.md +0 -1095
  245. package/src/installs/lftp.js +0 -356
  246. package/src/installs/lftp.md +0 -907
  247. package/src/installs/lsb-release.js +0 -346
  248. package/src/installs/lsb-release.md +0 -814
  249. package/src/installs/messenger.js +0 -847
  250. package/src/installs/messenger.md +0 -900
  251. package/src/installs/microsoft-office.js +0 -568
  252. package/src/installs/microsoft-office.md +0 -760
  253. package/src/installs/microsoft-teams.js +0 -801
  254. package/src/installs/microsoft-teams.md +0 -886
  255. package/src/installs/moom.js +0 -326
  256. package/src/installs/moom.md +0 -570
  257. package/src/installs/node.js +0 -904
  258. package/src/installs/node.md +0 -1153
  259. package/src/installs/nordpass.js +0 -716
  260. package/src/installs/nordpass.md +0 -921
  261. package/src/installs/nordvpn.js +0 -892
  262. package/src/installs/nordvpn.md +0 -1052
  263. package/src/installs/nvm.js +0 -995
  264. package/src/installs/nvm.md +0 -1057
  265. package/src/installs/ohmyzsh.js +0 -529
  266. package/src/installs/ohmyzsh.md +0 -1094
  267. package/src/installs/openssh.js +0 -804
  268. package/src/installs/openssh.md +0 -1056
  269. package/src/installs/pandoc.js +0 -662
  270. package/src/installs/pandoc.md +0 -1036
  271. package/src/installs/parallels-desktop.js +0 -431
  272. package/src/installs/parallels-desktop.md +0 -446
  273. package/src/installs/pinentry.js +0 -510
  274. package/src/installs/pinentry.md +0 -1142
  275. package/src/installs/pngyu.js +0 -869
  276. package/src/installs/pngyu.md +0 -896
  277. package/src/installs/postman.js +0 -799
  278. package/src/installs/postman.md +0 -940
  279. package/src/installs/procps.js +0 -425
  280. package/src/installs/procps.md +0 -851
  281. package/src/installs/safari-tech-preview.js +0 -374
  282. package/src/installs/safari-tech-preview.md +0 -533
  283. package/src/installs/sfnt2woff.js +0 -658
  284. package/src/installs/sfnt2woff.md +0 -795
  285. package/src/installs/shellcheck.js +0 -481
  286. package/src/installs/shellcheck.md +0 -1005
  287. package/src/installs/slack.js +0 -741
  288. package/src/installs/slack.md +0 -865
  289. package/src/installs/snagit.js +0 -585
  290. package/src/installs/snagit.md +0 -844
  291. package/src/installs/software-properties-common.js +0 -372
  292. package/src/installs/software-properties-common.md +0 -805
  293. package/src/installs/spotify.js +0 -877
  294. package/src/installs/spotify.md +0 -901
  295. package/src/installs/studio-3t.js +0 -823
  296. package/src/installs/studio-3t.md +0 -918
  297. package/src/installs/sublime-text.js +0 -804
  298. package/src/installs/sublime-text.md +0 -914
  299. package/src/installs/superwhisper.js +0 -706
  300. package/src/installs/superwhisper.md +0 -630
  301. package/src/installs/tailscale.js +0 -745
  302. package/src/installs/tailscale.md +0 -1100
  303. package/src/installs/tar.js +0 -389
  304. package/src/installs/tar.md +0 -946
  305. package/src/installs/termius.js +0 -798
  306. package/src/installs/termius.md +0 -844
  307. package/src/installs/terraform.js +0 -779
  308. package/src/installs/terraform.md +0 -899
  309. package/src/installs/tfenv.js +0 -778
  310. package/src/installs/tfenv.md +0 -1091
  311. package/src/installs/tidal.js +0 -771
  312. package/src/installs/tidal.md +0 -864
  313. package/src/installs/tmux.js +0 -346
  314. package/src/installs/tmux.md +0 -1030
  315. package/src/installs/tree.js +0 -411
  316. package/src/installs/tree.md +0 -833
  317. package/src/installs/unzip.js +0 -460
  318. package/src/installs/unzip.md +0 -879
  319. package/src/installs/vim.js +0 -421
  320. package/src/installs/vim.md +0 -1040
  321. package/src/installs/vlc.js +0 -821
  322. package/src/installs/vlc.md +0 -927
  323. package/src/installs/vscode.js +0 -843
  324. package/src/installs/vscode.md +0 -1002
  325. package/src/installs/wget.js +0 -420
  326. package/src/installs/wget.md +0 -791
  327. package/src/installs/whatsapp.js +0 -729
  328. package/src/installs/whatsapp.md +0 -854
  329. package/src/installs/winpty.js +0 -352
  330. package/src/installs/winpty.md +0 -620
  331. package/src/installs/woff2.js +0 -553
  332. package/src/installs/woff2.md +0 -977
  333. package/src/installs/wsl.js +0 -572
  334. package/src/installs/wsl.md +0 -699
  335. package/src/installs/xcode-clt.js +0 -520
  336. package/src/installs/xcode-clt.md +0 -351
  337. package/src/installs/xcode.js +0 -560
  338. package/src/installs/xcode.md +0 -573
  339. package/src/installs/yarn.js +0 -824
  340. package/src/installs/yarn.md +0 -1074
  341. package/src/installs/yq.js +0 -654
  342. package/src/installs/yq.md +0 -944
  343. package/src/installs/yt-dlp.js +0 -701
  344. package/src/installs/yt-dlp.md +0 -946
  345. package/src/installs/yum-utils.js +0 -297
  346. package/src/installs/yum-utils.md +0 -648
  347. package/src/installs/zoom.js +0 -759
  348. package/src/installs/zoom.md +0 -884
  349. package/src/installs/zsh.js +0 -455
  350. package/src/installs/zsh.md +0 -1008
  351. package/src/scripts/README.md +0 -617
  352. package/src/scripts/STATUS.md +0 -208
  353. package/src/scripts/afk.js +0 -411
  354. package/src/scripts/backup-all.js +0 -746
  355. package/src/scripts/backup-source.js +0 -727
  356. package/src/scripts/brewd.js +0 -389
  357. package/src/scripts/brewi.js +0 -520
  358. package/src/scripts/brewr.js +0 -527
  359. package/src/scripts/brews.js +0 -477
  360. package/src/scripts/brewu.js +0 -504
  361. package/src/scripts/c.js +0 -201
  362. package/src/scripts/ccurl.js +0 -341
  363. package/src/scripts/certbot-crontab-init.js +0 -504
  364. package/src/scripts/certbot-init.js +0 -657
  365. package/src/scripts/ch.js +0 -355
  366. package/src/scripts/claude-danger.js +0 -268
  367. package/src/scripts/clean-dev.js +0 -435
  368. package/src/scripts/clear-dns-cache.js +0 -541
  369. package/src/scripts/clone.js +0 -435
  370. package/src/scripts/code-all.js +0 -437
  371. package/src/scripts/count-files.js +0 -211
  372. package/src/scripts/count-folders.js +0 -211
  373. package/src/scripts/count.js +0 -264
  374. package/src/scripts/d.js +0 -219
  375. package/src/scripts/datauri.js +0 -389
  376. package/src/scripts/delete-files.js +0 -380
  377. package/src/scripts/docker-clean.js +0 -426
  378. package/src/scripts/dp.js +0 -442
  379. package/src/scripts/e.js +0 -390
  380. package/src/scripts/empty-trash.js +0 -513
  381. package/src/scripts/evm.js +0 -444
  382. package/src/scripts/fetch-github-repos.js +0 -456
  383. package/src/scripts/get-channel.js +0 -345
  384. package/src/scripts/get-course.js +0 -399
  385. package/src/scripts/get-dependencies.js +0 -306
  386. package/src/scripts/get-folder.js +0 -799
  387. package/src/scripts/get-tunes.js +0 -426
  388. package/src/scripts/get-video.js +0 -367
  389. package/src/scripts/git-backup.js +0 -577
  390. package/src/scripts/git-clone.js +0 -493
  391. package/src/scripts/git-pup.js +0 -319
  392. package/src/scripts/git-push.js +0 -396
  393. package/src/scripts/h.js +0 -622
  394. package/src/scripts/hide-desktop-icons.js +0 -499
  395. package/src/scripts/hide-hidden-files.js +0 -538
  396. package/src/scripts/install-dependencies-from.js +0 -456
  397. package/src/scripts/ips.js +0 -663
  398. package/src/scripts/iso.js +0 -370
  399. package/src/scripts/killni.js +0 -577
  400. package/src/scripts/ll.js +0 -467
  401. package/src/scripts/local-ip.js +0 -325
  402. package/src/scripts/m.js +0 -524
  403. package/src/scripts/map.js +0 -309
  404. package/src/scripts/mkd.js +0 -351
  405. package/src/scripts/ncu-update-all.js +0 -457
  406. package/src/scripts/nginx-init.js +0 -718
  407. package/src/scripts/npmi.js +0 -382
  408. package/src/scripts/o.js +0 -511
  409. package/src/scripts/org-by-date.js +0 -338
  410. package/src/scripts/p.js +0 -224
  411. package/src/scripts/packages.js +0 -330
  412. package/src/scripts/path.js +0 -225
  413. package/src/scripts/ports.js +0 -597
  414. package/src/scripts/q.js +0 -305
  415. package/src/scripts/refresh-files.js +0 -394
  416. package/src/scripts/remove-smaller-files.js +0 -516
  417. package/src/scripts/rename-files-with-date.js +0 -533
  418. package/src/scripts/resize-image.js +0 -539
  419. package/src/scripts/rm-safe.js +0 -669
  420. package/src/scripts/s.js +0 -540
  421. package/src/scripts/set-git-public.js +0 -365
  422. package/src/scripts/show-desktop-icons.js +0 -475
  423. package/src/scripts/show-hidden-files.js +0 -472
  424. package/src/scripts/tpa.js +0 -280
  425. package/src/scripts/tpo.js +0 -280
  426. package/src/scripts/u.js +0 -505
  427. package/src/scripts/vpush.js +0 -437
  428. package/src/scripts/y.js +0 -283
  429. package/src/utils/README.md +0 -95
  430. package/src/utils/common/apps.js +0 -143
  431. package/src/utils/common/display.js +0 -157
  432. package/src/utils/common/network.js +0 -185
  433. package/src/utils/common/os.js +0 -294
  434. package/src/utils/common/package-manager.js +0 -301
  435. package/src/utils/common/privileges.js +0 -138
  436. package/src/utils/common/shell.js +0 -261
  437. package/src/utils/macos/apps.js +0 -228
  438. package/src/utils/macos/brew.js +0 -315
  439. package/src/utils/ubuntu/apt.js +0 -307
  440. package/src/utils/ubuntu/desktop.js +0 -292
  441. package/src/utils/ubuntu/snap.js +0 -344
  442. package/src/utils/ubuntu/systemd.js +0 -286
  443. package/src/utils/windows/choco.js +0 -465
  444. package/src/utils/windows/env.js +0 -246
  445. package/src/utils/windows/registry.js +0 -269
  446. package/src/utils/windows/shell.js +0 -240
  447. package/src/utils/windows/winget.js +0 -489
@@ -1,833 +0,0 @@
1
- # Installing Bash Completion 2
2
-
3
- ## Dependencies
4
-
5
- ### macOS (Homebrew)
6
- - **Required:**
7
- - Homebrew package manager - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
8
- - Bash 4.2 or later - Install via `brew install bash` (macOS ships with Bash 3.2 which is incompatible)
9
- - **Optional:** None
10
- - **Auto-installed:** None
11
-
12
- ### Ubuntu (APT/Snap)
13
- - **Required:**
14
- - APT package manager (built-in on Ubuntu/Debian systems)
15
- - Bash 4.2 or later (typically pre-installed on modern Ubuntu/Debian)
16
- - **Optional:** None
17
- - **Auto-installed:** All runtime dependencies are handled automatically by APT
18
-
19
- ### Raspberry Pi OS (APT/Snap)
20
- - **Required:**
21
- - APT package manager (built-in on Raspberry Pi OS)
22
- - Bash 4.2 or later (typically pre-installed on Raspberry Pi OS)
23
- - **Optional:** None
24
- - **Auto-installed:** All runtime dependencies are handled automatically by APT
25
-
26
- ### Amazon Linux (DNF/YUM)
27
- - **Required:**
28
- - DNF (Amazon Linux 2023) or YUM (Amazon Linux 2) package manager (built-in)
29
- - rpm command for verification (built-in)
30
- - Bash 4.2 or later (typically pre-installed on Amazon Linux)
31
- - **Optional:** None
32
- - **Auto-installed:** All runtime dependencies are handled automatically by DNF/YUM
33
-
34
- ### Windows (Chocolatey/winget)
35
- - **Required:** None (bash-completion is not natively supported on Windows)
36
- - **Optional:**
37
- - Clink (for Bash-style line editing in cmd.exe) - Install via `choco install clink -y` (Note: This is NOT the same as bash-completion)
38
- - **Auto-installed:** None
39
- - **Note:** For actual bash-completion support on Windows, use WSL (see WSL section) or Git Bash (see Git Bash section)
40
-
41
- ### Git Bash (Manual/Portable)
42
- - **Required:**
43
- - Git for Windows (includes Git Bash/MINGW64 environment) - Download from https://git-scm.com/download/win
44
- - curl command (included with Git for Windows) for downloading completion scripts
45
- - **Optional:** None
46
- - **Auto-installed:** Git completion scripts are typically bundled with Git for Windows installation
47
- - **Note:** Git Bash provides limited bash-completion support. For full functionality, use WSL instead.
48
-
49
- ## Overview
50
-
51
- Bash Completion (bash-completion) is a collection of shell functions that take advantage of the programmable completion feature of Bash. It provides intelligent auto-completion for commands, file paths, options, and arguments when you press the Tab key. Version 2 (bash-completion@2) is designed for Bash 4.2 and later, offering improved performance and more comprehensive completion support compared to version 1.
52
-
53
- Key benefits include:
54
- - Faster command entry through Tab-triggered auto-completion
55
- - Reduced typing errors by suggesting valid options and arguments
56
- - Discovery of command options without consulting documentation
57
- - Support for hundreds of common commands out of the box
58
-
59
- ## Prerequisites
60
-
61
- Before installing bash-completion on any platform, ensure:
62
-
63
- 1. **Bash 4.2 or later** - Version 2 of bash-completion requires Bash 4.2+. Check your version with `bash --version`.
64
- 2. **Terminal access** - You need access to a terminal or command-line interface.
65
- 3. **Administrative privileges** - Required on most platforms for system-wide installation.
66
-
67
- **Important**: bash-completion version 1 and version 2 conflict with each other. If you have version 1 installed, remove it before installing version 2.
68
-
69
- ## Platform-Specific Installation
70
-
71
- ### macOS (Homebrew)
72
-
73
- #### Prerequisites
74
-
75
- - macOS 11 (Big Sur) or later
76
- - Homebrew package manager installed
77
- - Bash 4.2 or later installed (macOS ships with Bash 3.2 by default)
78
-
79
- If Homebrew is not installed, install it first:
80
-
81
- ```bash
82
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
83
- ```
84
-
85
- **Critical**: macOS ships with Bash 3.2 (from 2007) due to licensing. You must install a modern version of Bash before using bash-completion@2:
86
-
87
- ```bash
88
- brew install --quiet bash
89
- ```
90
-
91
- Add the new Bash to allowed shells and set it as default:
92
-
93
- ```bash
94
- echo '/opt/homebrew/bin/bash' | sudo tee -a /etc/shells
95
- chsh -s /opt/homebrew/bin/bash
96
- ```
97
-
98
- #### Installation Steps
99
-
100
- Run the following command to install bash-completion@2:
101
-
102
- ```bash
103
- brew install --quiet bash-completion@2
104
- ```
105
-
106
- The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts.
107
-
108
- #### Configuration
109
-
110
- After installation, you must configure your shell to load bash-completion. Add the following to your `~/.bash_profile`:
111
-
112
- ```bash
113
- # Enable bash-completion@2
114
- [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]] && . "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
115
- ```
116
-
117
- For Intel Macs, `HOMEBREW_PREFIX` is `/usr/local`. For Apple Silicon Macs (M1/M2/M3/M4), it is `/opt/homebrew`. If `HOMEBREW_PREFIX` is not set in your environment, use the explicit path:
118
-
119
- For Apple Silicon:
120
- ```bash
121
- [[ -r "/opt/homebrew/etc/profile.d/bash_completion.sh" ]] && . "/opt/homebrew/etc/profile.d/bash_completion.sh"
122
- ```
123
-
124
- For Intel:
125
- ```bash
126
- [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
127
- ```
128
-
129
- Apply the changes:
130
-
131
- ```bash
132
- source ~/.bash_profile
133
- ```
134
-
135
- #### Verification
136
-
137
- Confirm the installation succeeded:
138
-
139
- ```bash
140
- type _init_completion
141
- ```
142
-
143
- Expected output:
144
-
145
- ```
146
- _init_completion is a function
147
- ```
148
-
149
- Test completion by typing `git ` followed by pressing Tab twice. You should see a list of Git subcommands.
150
-
151
- #### Troubleshooting
152
-
153
- **Problem**: `bash: _init_completion: command not found`
154
-
155
- **Solution**: The completion script is not being sourced. Verify the path exists and add the source line to `~/.bash_profile`:
156
-
157
- ```bash
158
- ls -la "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
159
- ```
160
-
161
- **Problem**: Completion not working despite configuration
162
-
163
- **Solution**: Ensure you are running Bash 4.2+ and not the system default Bash 3.2:
164
-
165
- ```bash
166
- echo $BASH_VERSION
167
- ```
168
-
169
- If it shows 3.x, restart your terminal or ensure the new Bash is your default shell.
170
-
171
- **Problem**: Conflicts with bash-completion version 1
172
-
173
- **Solution**: Uninstall version 1 first:
174
-
175
- ```bash
176
- brew uninstall bash-completion
177
- brew install --quiet bash-completion@2
178
- ```
179
-
180
- ---
181
-
182
- ### Ubuntu/Debian (APT)
183
-
184
- #### Prerequisites
185
-
186
- - Ubuntu 18.04 or later, or Debian 10 or later (64-bit)
187
- - sudo privileges
188
- - Bash 4.2 or later (default on modern Ubuntu/Debian)
189
-
190
- **Note**: On Ubuntu/Debian, the APT package `bash-completion` provides version 2.x functionality. The `@2` version suffix is specific to Homebrew on macOS.
191
-
192
- #### Installation Steps
193
-
194
- Run the following commands to install bash-completion:
195
-
196
- ```bash
197
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
198
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion
199
- ```
200
-
201
- The `DEBIAN_FRONTEND=noninteractive` and `-y` flags ensure fully non-interactive installation suitable for scripts and automation.
202
-
203
- #### Configuration
204
-
205
- Ubuntu and Debian typically enable bash-completion by default. The installer places a script at `/etc/profile.d/bash_completion.sh` that is automatically sourced for login shells.
206
-
207
- Verify that `/etc/bash.bashrc` or `~/.bashrc` contains the completion loading logic:
208
-
209
- ```bash
210
- grep -q bash_completion /etc/bash.bashrc && echo "System-wide completion configured" || echo "Check configuration"
211
- ```
212
-
213
- If completion is not enabled, add the following to your `~/.bashrc`:
214
-
215
- ```bash
216
- # Enable bash-completion
217
- if ! shopt -oq posix; then
218
- if [ -f /usr/share/bash-completion/bash_completion ]; then
219
- . /usr/share/bash-completion/bash_completion
220
- elif [ -f /etc/bash_completion ]; then
221
- . /etc/bash_completion
222
- fi
223
- fi
224
- ```
225
-
226
- Apply changes:
227
-
228
- ```bash
229
- source ~/.bashrc
230
- ```
231
-
232
- #### Verification
233
-
234
- Confirm the installation succeeded:
235
-
236
- ```bash
237
- type _init_completion
238
- ```
239
-
240
- Expected output:
241
-
242
- ```
243
- _init_completion is a function
244
- ```
245
-
246
- Check the installed version:
247
-
248
- ```bash
249
- apt show bash-completion 2>/dev/null | grep Version
250
- ```
251
-
252
- Expected output (version may vary):
253
-
254
- ```
255
- Version: 1:2.11-8
256
- ```
257
-
258
- #### Troubleshooting
259
-
260
- **Problem**: Completion not working after installation
261
-
262
- **Solution**: Source the completion script manually or restart your terminal:
263
-
264
- ```bash
265
- source /etc/profile.d/bash_completion.sh
266
- ```
267
-
268
- **Problem**: `apt show bash-completion` returns "N: Unable to locate package"
269
-
270
- **Solution**: Update the package list:
271
-
272
- ```bash
273
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
274
- ```
275
-
276
- **Problem**: Tab completion works for some commands but not others
277
-
278
- **Solution**: Individual command completions are stored in `/usr/share/bash-completion/completions/`. Check if the completion file exists for your command:
279
-
280
- ```bash
281
- ls /usr/share/bash-completion/completions/
282
- ```
283
-
284
- ---
285
-
286
- ### Raspberry Pi OS (APT)
287
-
288
- #### Prerequisites
289
-
290
- - Raspberry Pi OS (32-bit or 64-bit)
291
- - Raspberry Pi 3, 4, 5, or Zero 2 W (any model with sufficient resources)
292
- - sudo privileges
293
- - Bash 4.2 or later (default on Raspberry Pi OS)
294
-
295
- **Note**: Raspberry Pi OS is based on Debian, so the installation process is nearly identical to Ubuntu/Debian.
296
-
297
- #### Installation Steps
298
-
299
- Run the following commands to install bash-completion:
300
-
301
- ```bash
302
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
303
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion
304
- ```
305
-
306
- #### Configuration
307
-
308
- Raspberry Pi OS typically enables bash-completion by default after installation. Verify the configuration exists in `/etc/bash.bashrc`:
309
-
310
- ```bash
311
- grep -q bash_completion /etc/bash.bashrc && echo "System-wide completion configured" || echo "Check configuration"
312
- ```
313
-
314
- If completion is not enabled, add the following to your `~/.bashrc`:
315
-
316
- ```bash
317
- # Enable bash-completion
318
- if ! shopt -oq posix; then
319
- if [ -f /usr/share/bash-completion/bash_completion ]; then
320
- . /usr/share/bash-completion/bash_completion
321
- elif [ -f /etc/bash_completion ]; then
322
- . /etc/bash_completion
323
- fi
324
- fi
325
- ```
326
-
327
- Apply changes:
328
-
329
- ```bash
330
- source ~/.bashrc
331
- ```
332
-
333
- #### Verification
334
-
335
- Confirm the installation succeeded:
336
-
337
- ```bash
338
- type _init_completion
339
- ```
340
-
341
- Expected output:
342
-
343
- ```
344
- _init_completion is a function
345
- ```
346
-
347
- Test ARM-specific functionality by ensuring completions work:
348
-
349
- ```bash
350
- # Type 'sudo apt-get install ' and press Tab twice
351
- # You should see package name suggestions
352
- ```
353
-
354
- #### Troubleshooting
355
-
356
- **Problem**: Installation is slow or times out
357
-
358
- **Solution**: Raspberry Pi may have limited bandwidth. Use a wired ethernet connection or wait for the download to complete. Avoid interrupting the installation.
359
-
360
- **Problem**: Completion not working after reboot
361
-
362
- **Solution**: Ensure `~/.bashrc` is sourced by `~/.bash_profile`. Add to `~/.bash_profile` if needed:
363
-
364
- ```bash
365
- if [ -f ~/.bashrc ]; then
366
- . ~/.bashrc
367
- fi
368
- ```
369
-
370
- **Problem**: Completion works for user but not for root
371
-
372
- **Solution**: Root may have a different shell configuration. Source completion in root's profile:
373
-
374
- ```bash
375
- sudo bash -c 'echo "source /etc/profile.d/bash_completion.sh" >> /root/.bashrc'
376
- ```
377
-
378
- ---
379
-
380
- ### Amazon Linux (DNF/YUM)
381
-
382
- #### Prerequisites
383
-
384
- - Amazon Linux 2023 (uses DNF) or Amazon Linux 2 (uses YUM)
385
- - sudo privileges
386
- - Bash 4.2 or later (default on Amazon Linux)
387
-
388
- #### Installation Steps
389
-
390
- **For Amazon Linux 2023:**
391
-
392
- ```bash
393
- sudo dnf install -y bash-completion
394
- ```
395
-
396
- **For Amazon Linux 2:**
397
-
398
- ```bash
399
- sudo yum install -y bash-completion
400
- ```
401
-
402
- Both commands use the `-y` flag for non-interactive installation.
403
-
404
- #### Configuration
405
-
406
- After installation, the completion script is placed at `/etc/profile.d/bash_completion.sh` and is typically sourced automatically for login shells.
407
-
408
- To ensure completion is available in all sessions, verify your `~/.bashrc` sources the profile scripts:
409
-
410
- ```bash
411
- grep -q bash_completion /etc/bashrc && echo "System-wide completion configured" || echo "Manual configuration may be needed"
412
- ```
413
-
414
- If needed, add the following to your `~/.bashrc`:
415
-
416
- ```bash
417
- # Enable bash-completion
418
- [[ $PS1 && -f /etc/profile.d/bash_completion.sh ]] && . /etc/profile.d/bash_completion.sh
419
- ```
420
-
421
- Apply changes:
422
-
423
- ```bash
424
- source ~/.bashrc
425
- ```
426
-
427
- #### Verification
428
-
429
- Confirm the installation succeeded:
430
-
431
- ```bash
432
- type _init_completion
433
- ```
434
-
435
- Expected output:
436
-
437
- ```
438
- _init_completion is a function
439
- ```
440
-
441
- Verify the package installation:
442
-
443
- ```bash
444
- # Amazon Linux 2023
445
- rpm -q bash-completion
446
-
447
- # Amazon Linux 2
448
- rpm -q bash-completion
449
- ```
450
-
451
- Expected output (version may vary):
452
-
453
- ```
454
- bash-completion-2.11-3.amzn2023.noarch
455
- ```
456
-
457
- #### Troubleshooting
458
-
459
- **Problem**: `dnf: command not found` on Amazon Linux 2
460
-
461
- **Solution**: Amazon Linux 2 uses YUM, not DNF. Use `yum` instead:
462
-
463
- ```bash
464
- sudo yum install -y bash-completion
465
- ```
466
-
467
- **Problem**: Completion not loading in SSH sessions
468
-
469
- **Solution**: SSH sessions may not source `/etc/profile.d/` scripts. Add explicit sourcing to `~/.bashrc`:
470
-
471
- ```bash
472
- [[ -f /etc/profile.d/bash_completion.sh ]] && . /etc/profile.d/bash_completion.sh
473
- ```
474
-
475
- **Problem**: EPEL repository required for some completions
476
-
477
- **Solution**: Install EPEL for additional packages:
478
-
479
- ```bash
480
- # Amazon Linux 2
481
- sudo amazon-linux-extras install epel -y
482
-
483
- # Amazon Linux 2023 (EPEL not typically needed)
484
- ```
485
-
486
- ---
487
-
488
- ### Windows (Not Natively Supported)
489
-
490
- #### Overview
491
-
492
- Bash Completion is a Linux/Unix tool that does not run natively on Windows. Windows uses PowerShell or Command Prompt, which have their own completion mechanisms.
493
-
494
- For Bash functionality on Windows, use one of these alternatives:
495
-
496
- 1. **WSL (Windows Subsystem for Linux)** - Recommended. See the WSL section below.
497
- 2. **Git Bash** - Limited Bash environment. See the Git Bash section below.
498
- 3. **Clink** - Provides Bash-style completion for Command Prompt (not actual bash-completion).
499
-
500
- #### Clink (Bash-Style Completion for cmd.exe)
501
-
502
- If you want Bash-style command-line editing in the native Windows Command Prompt, install Clink:
503
-
504
- ```powershell
505
- choco install clink -y
506
- ```
507
-
508
- **Note**: Clink provides Bash-like line editing features for `cmd.exe`, but it is not the same as bash-completion and does not provide the same completion functionality.
509
-
510
- #### Verification
511
-
512
- Clink enhances Command Prompt automatically after installation. Open a new `cmd.exe` window and look for the Clink banner on startup.
513
-
514
- #### Troubleshooting
515
-
516
- **Problem**: Want actual bash-completion on Windows
517
-
518
- **Solution**: Install WSL and follow the WSL installation instructions below. This provides a full Linux environment with proper bash-completion support.
519
-
520
- ---
521
-
522
- ### WSL (Windows Subsystem for Linux - Ubuntu)
523
-
524
- #### Prerequisites
525
-
526
- - Windows 10 version 1903 or later, or Windows 11
527
- - WSL 2 installed and configured (WSL 1 also works but WSL 2 is recommended)
528
- - Ubuntu distribution installed via WSL
529
- - sudo privileges within the WSL environment
530
-
531
- To check if WSL is installed:
532
-
533
- ```powershell
534
- wsl --version
535
- ```
536
-
537
- If WSL is not installed, install it from PowerShell (Administrator):
538
-
539
- ```powershell
540
- wsl --install
541
- ```
542
-
543
- #### Installation Steps
544
-
545
- Open your WSL Ubuntu terminal and run:
546
-
547
- ```bash
548
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
549
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion
550
- ```
551
-
552
- #### Configuration
553
-
554
- WSL Ubuntu typically enables bash-completion by default. Verify the configuration:
555
-
556
- ```bash
557
- grep -q bash_completion /etc/bash.bashrc && echo "System-wide completion configured" || echo "Check configuration"
558
- ```
559
-
560
- If completion is not enabled, add the following to your `~/.bashrc`:
561
-
562
- ```bash
563
- # Enable bash-completion
564
- if ! shopt -oq posix; then
565
- if [ -f /usr/share/bash-completion/bash_completion ]; then
566
- . /usr/share/bash-completion/bash_completion
567
- elif [ -f /etc/bash_completion ]; then
568
- . /etc/bash_completion
569
- fi
570
- fi
571
- ```
572
-
573
- Apply changes:
574
-
575
- ```bash
576
- source ~/.bashrc
577
- ```
578
-
579
- #### Verification
580
-
581
- Confirm the installation succeeded:
582
-
583
- ```bash
584
- type _init_completion
585
- ```
586
-
587
- Expected output:
588
-
589
- ```
590
- _init_completion is a function
591
- ```
592
-
593
- #### Troubleshooting
594
-
595
- **Problem**: Completion not working after WSL restart
596
-
597
- **Solution**: Ensure `~/.bashrc` is being sourced. WSL may use `~/.profile` for login shells. Add to `~/.profile`:
598
-
599
- ```bash
600
- if [ -f ~/.bashrc ]; then
601
- . ~/.bashrc
602
- fi
603
- ```
604
-
605
- **Problem**: systemd-related errors when installing packages
606
-
607
- **Solution**: Enable systemd in WSL if needed. Add to `/etc/wsl.conf`:
608
-
609
- ```ini
610
- [boot]
611
- systemd=true
612
- ```
613
-
614
- Then restart WSL from PowerShell:
615
-
616
- ```powershell
617
- wsl --shutdown
618
- ```
619
-
620
- **Problem**: PATH conflicts between Windows and Linux
621
-
622
- **Solution**: Windows paths may interfere with Linux commands. You can disable Windows path interop by adding to `/etc/wsl.conf`:
623
-
624
- ```ini
625
- [interop]
626
- appendWindowsPath=false
627
- ```
628
-
629
- ---
630
-
631
- ### Git Bash (Manual Installation)
632
-
633
- #### Prerequisites
634
-
635
- - Windows 10 or Windows 11
636
- - Git for Windows installed (includes Git Bash/MINGW64)
637
- - Write access to your home directory
638
-
639
- **Important**: Git Bash provides a minimal Bash environment. While it includes Git-specific completions, general bash-completion is limited. For full bash-completion support, use WSL instead.
640
-
641
- #### Installation Steps
642
-
643
- Git Bash includes Git command completion by default. To verify and enable it:
644
-
645
- 1. Create a directory for completion scripts:
646
-
647
- ```bash
648
- mkdir -p ~/bash_completion.d
649
- ```
650
-
651
- 2. Download the official Git completion script:
652
-
653
- ```bash
654
- curl -fsSL -o ~/bash_completion.d/git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
655
- ```
656
-
657
- 3. Add the following to your `~/.bashrc` (create the file if it does not exist):
658
-
659
- ```bash
660
- # Enable Git completion
661
- if [ -f ~/bash_completion.d/git-completion.bash ]; then
662
- . ~/bash_completion.d/git-completion.bash
663
- fi
664
- ```
665
-
666
- 4. Apply changes by restarting Git Bash or running:
667
-
668
- ```bash
669
- source ~/.bashrc
670
- ```
671
-
672
- #### Adding Additional Completions
673
-
674
- To add completion for other commands, download their completion scripts to `~/bash_completion.d/` and source them in `~/.bashrc`:
675
-
676
- ```bash
677
- # Example: Download Docker completion
678
- curl -fsSL -o ~/bash_completion.d/docker-completion.bash https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker
679
-
680
- # Add to ~/.bashrc
681
- echo '[ -f ~/bash_completion.d/docker-completion.bash ] && . ~/bash_completion.d/docker-completion.bash' >> ~/.bashrc
682
- ```
683
-
684
- #### Verification
685
-
686
- Confirm Git completion is working:
687
-
688
- ```bash
689
- # Type 'git chec' and press Tab
690
- # Should complete to 'git checkout'
691
- git chec<TAB>
692
- ```
693
-
694
- Test branch completion:
695
-
696
- ```bash
697
- # In a Git repository, type 'git checkout ' and press Tab
698
- # Should show available branches
699
- ```
700
-
701
- #### Troubleshooting
702
-
703
- **Problem**: Tab completion does not work
704
-
705
- **Solution**: Ensure the completion script is sourced. Check that `~/.bashrc` exists and contains the source line:
706
-
707
- ```bash
708
- cat ~/.bashrc | grep git-completion
709
- ```
710
-
711
- **Problem**: Completion script not found at the expected location
712
-
713
- **Solution**: Git for Windows may include completion scripts in a different location. Check:
714
-
715
- ```bash
716
- ls "/c/Program Files/Git/mingw64/share/git/completion/"
717
- ```
718
-
719
- If found, source from that location instead:
720
-
721
- ```bash
722
- if [ -f "/c/Program Files/Git/mingw64/share/git/completion/git-completion.bash" ]; then
723
- . "/c/Program Files/Git/mingw64/share/git/completion/git-completion.bash"
724
- fi
725
- ```
726
-
727
- **Problem**: `~/.bashrc` is not being sourced
728
-
729
- **Solution**: Git Bash may source `~/.bash_profile` instead. Add to `~/.bash_profile`:
730
-
731
- ```bash
732
- if [ -f ~/.bashrc ]; then
733
- . ~/.bashrc
734
- fi
735
- ```
736
-
737
- ---
738
-
739
- ## Post-Installation Configuration
740
-
741
- ### Adding Completions for Homebrew Packages (macOS)
742
-
743
- After installing tools via Homebrew, link their completions:
744
-
745
- ```bash
746
- brew completions link
747
- ```
748
-
749
- This makes completions for Homebrew-installed tools available to bash-completion.
750
-
751
- ### Adding Custom Completions
752
-
753
- Place custom completion scripts in the appropriate directory:
754
-
755
- | Platform | Completion Directory |
756
- |----------|---------------------|
757
- | macOS (Homebrew) | `${HOMEBREW_PREFIX}/etc/bash_completion.d/` |
758
- | Ubuntu/Debian | `/usr/share/bash-completion/completions/` |
759
- | Amazon Linux | `/usr/share/bash-completion/completions/` |
760
- | Git Bash | `~/bash_completion.d/` |
761
-
762
- ### Verifying Completion is Active
763
-
764
- Test completion functionality with any command that supports it:
765
-
766
- ```bash
767
- # Type a partial command and press Tab twice
768
- git <TAB><TAB> # Shows Git subcommands
769
- ssh <TAB><TAB> # Shows known hosts
770
- cd <TAB><TAB> # Shows directories
771
- ```
772
-
773
- ---
774
-
775
- ## Common Issues
776
-
777
- ### Issue: Completion Works for Some Commands but Not Others
778
-
779
- **Cause**: Not all commands ship with completion scripts. Completions must be installed separately or provided by the package.
780
-
781
- **Solution**: Check if a completion script exists for the command:
782
-
783
- ```bash
784
- # On Ubuntu/Debian/Amazon Linux
785
- ls /usr/share/bash-completion/completions/ | grep <command>
786
-
787
- # On macOS
788
- ls ${HOMEBREW_PREFIX}/etc/bash_completion.d/ | grep <command>
789
- ```
790
-
791
- ### Issue: Slow Completion Performance
792
-
793
- **Cause**: Large completion lists or slow disk access.
794
-
795
- **Solution**: bash-completion@2 includes lazy loading to improve performance. Ensure you are using version 2.x:
796
-
797
- ```bash
798
- # Check the bash_completion script version
799
- grep -m1 "BASH_COMPLETION_VERSINFO" /usr/share/bash-completion/bash_completion 2>/dev/null || \
800
- grep -m1 "BASH_COMPLETION_VERSINFO" ${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh 2>/dev/null
801
- ```
802
-
803
- ### Issue: Completion Breaks After System Update
804
-
805
- **Cause**: Configuration files may be overwritten or package updates may change paths.
806
-
807
- **Solution**: Re-source your configuration and verify paths:
808
-
809
- ```bash
810
- source ~/.bashrc
811
- type _init_completion
812
- ```
813
-
814
- ### Issue: "bash: _init_completion: command not found" After Installation
815
-
816
- **Cause**: The completion script is not being sourced by your shell configuration.
817
-
818
- **Solution**: Manually add the source line to your `~/.bashrc` or `~/.bash_profile` as documented in the platform-specific sections above.
819
-
820
- ---
821
-
822
- ## References
823
-
824
- - [bash-completion GitHub Repository](https://github.com/scop/bash-completion)
825
- - [bash-completion@2 Homebrew Formula](https://formulae.brew.sh/formula/bash-completion@2)
826
- - [Homebrew Shell Completion Documentation](https://docs.brew.sh/Shell-Completion)
827
- - [Ubuntu bash-completion Package](https://launchpad.net/ubuntu/+source/bash-completion)
828
- - [Debian Wiki - Add Bash Completion](https://wiki.debian.org/Add%20Bash%20Completion)
829
- - [nixCraft - How to Add Bash Auto Completion in Ubuntu Linux](https://www.cyberciti.biz/faq/add-bash-auto-completion-in-ubuntu-linux/)
830
- - [nixCraft - RHEL/CentOS Install and Activate Bash Completion](https://www.cyberciti.biz/faq/fedora-redhat-scientific-linuxenable-bash-completion/)
831
- - [Git Completion Script (Official)](https://github.com/git/git/blob/master/contrib/completion/git-completion.bash)
832
- - [Microsoft - Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install)
833
- - [Microsoft - Use systemd to manage Linux services with WSL](https://learn.microsoft.com/en-us/windows/wsl/systemd)