@fredlackey/devutils 0.0.1 → 0.0.3
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.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -0,0 +1,833 @@
|
|
|
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)
|