@fredlackey/devutils 0.0.10 → 0.0.12
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/package.json +1 -1
- package/src/installs/balena-etcher.js +4 -0
- package/src/installs/bambu-studio.js +321 -108
- package/src/installs/chrome-canary.js +27 -98
- package/src/installs/chromium.js +5 -1
- package/src/installs/dependencies.md +14 -5
- package/src/installs/installers.json +1383 -211
- package/src/installs/ohmyzsh.js +529 -0
- package/src/installs/ohmyzsh.md +1094 -0
- package/src/installs/studio-3t.js +7 -5
- package/src/installs/sublime-text.js +7 -2
- package/src/installs/zsh.js +455 -0
- package/src/installs/zsh.md +1008 -0
- package/src/utils/ubuntu/snap.js +45 -3
|
@@ -0,0 +1,1008 @@
|
|
|
1
|
+
# Installing Zsh
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Zsh (Z Shell) is a powerful Unix shell and command interpreter designed for interactive use and scripting. It combines features from Bash, ksh, and tcsh while adding many original features. Zsh is renowned for its advanced tab completion, spelling correction, themeable prompts, and extensive plugin ecosystem.
|
|
6
|
+
|
|
7
|
+
Key features of Zsh:
|
|
8
|
+
|
|
9
|
+
- **Advanced tab completion** - Context-aware completions for commands, arguments, file paths, and more
|
|
10
|
+
- **Spelling correction** - Automatic correction of typos in commands and paths
|
|
11
|
+
- **Themeable prompts** - Highly customizable prompt with support for git status, colors, and special characters
|
|
12
|
+
- **Plugin ecosystem** - Extensive plugins available through frameworks like Oh My Zsh
|
|
13
|
+
- **Improved globbing** - Extended pattern matching and recursive globbing (`**/*.js`)
|
|
14
|
+
- **Array and associative array support** - First-class support for complex data structures
|
|
15
|
+
- **Shared history** - Command history shared across multiple terminal sessions
|
|
16
|
+
|
|
17
|
+
Since macOS Catalina (10.15), Zsh has been the default shell on macOS. On Linux systems, Bash typically remains the default, but Zsh is readily available through standard package managers.
|
|
18
|
+
|
|
19
|
+
**Platform Support Summary**:
|
|
20
|
+
|
|
21
|
+
| Platform | Support Level | Package Manager | Default Shell |
|
|
22
|
+
|----------|---------------|-----------------|---------------|
|
|
23
|
+
| macOS (Intel/Apple Silicon) | Full | Homebrew / Pre-installed | Yes (Catalina+) |
|
|
24
|
+
| Ubuntu/Debian (x86_64) | Full | APT | No (Bash default) |
|
|
25
|
+
| Raspberry Pi OS (ARM) | Full | APT | No (Bash default) |
|
|
26
|
+
| Amazon Linux / RHEL / Fedora | Full | DNF/YUM | No (Bash default) |
|
|
27
|
+
| WSL (Ubuntu on Windows) | Full | APT | No (Bash default) |
|
|
28
|
+
| Windows (Native) | Not Supported | N/A | N/A |
|
|
29
|
+
| Git Bash | Not Supported | N/A | N/A |
|
|
30
|
+
|
|
31
|
+
**Note**: Windows native environments and Git Bash do not support Zsh. Windows users should use WSL (Windows Subsystem for Linux) to run Zsh.
|
|
32
|
+
|
|
33
|
+
## Dependencies
|
|
34
|
+
|
|
35
|
+
### macOS (Homebrew)
|
|
36
|
+
- **Required:**
|
|
37
|
+
- Homebrew package manager - Install via `dev install homebrew` or directly from https://brew.sh (only needed for updating to a newer Zsh version)
|
|
38
|
+
- Administrative privileges (sudo access) - Required for changing the default shell
|
|
39
|
+
- **Optional:** None
|
|
40
|
+
- **Auto-installed:**
|
|
41
|
+
- Zsh is pre-installed on macOS Catalina (10.15) and later as the default shell
|
|
42
|
+
- Homebrew handles Zsh dependencies (ncurses, pcre) transparently when installing via brew
|
|
43
|
+
|
|
44
|
+
### Ubuntu/Debian (APT)
|
|
45
|
+
- **Required:**
|
|
46
|
+
- APT package manager - Pre-installed on Ubuntu/Debian systems
|
|
47
|
+
- sudo privileges - Required for package installation and changing the default shell
|
|
48
|
+
- Internet connectivity - Required to download packages from APT repositories
|
|
49
|
+
- **Optional:** None
|
|
50
|
+
- **Auto-installed:**
|
|
51
|
+
- Zsh dependencies (libc6, libcap2, libtinfo6, libgdbm6) - APT handles these transparently
|
|
52
|
+
|
|
53
|
+
### Raspberry Pi OS (APT)
|
|
54
|
+
- **Required:**
|
|
55
|
+
- APT package manager - Pre-installed on Raspberry Pi OS
|
|
56
|
+
- sudo privileges - Required for package installation and changing the default shell
|
|
57
|
+
- Internet connectivity - Required to download packages from APT repositories
|
|
58
|
+
- **Optional:** None
|
|
59
|
+
- **Auto-installed:**
|
|
60
|
+
- Zsh dependencies - APT handles these for ARM architecture transparently
|
|
61
|
+
|
|
62
|
+
### Amazon Linux / RHEL / Fedora (DNF/YUM)
|
|
63
|
+
- **Required:**
|
|
64
|
+
- DNF (Amazon Linux 2023, RHEL 8+, Fedora) or YUM (Amazon Linux 2, RHEL 7) package manager - Pre-installed
|
|
65
|
+
- sudo privileges - Required for package installation and changing the default shell
|
|
66
|
+
- Internet connectivity - Required to download packages from distribution repositories
|
|
67
|
+
- **Optional:** None
|
|
68
|
+
- **Auto-installed:**
|
|
69
|
+
- Zsh dependencies (glibc, ncurses-libs) - DNF/YUM handles these transparently
|
|
70
|
+
|
|
71
|
+
### WSL (Ubuntu)
|
|
72
|
+
- **Required:**
|
|
73
|
+
- WSL 2 with Ubuntu distribution installed
|
|
74
|
+
- APT package manager - Pre-installed within WSL Ubuntu
|
|
75
|
+
- sudo privileges within WSL - Required for package installation
|
|
76
|
+
- **Optional:** None
|
|
77
|
+
- **Auto-installed:**
|
|
78
|
+
- Zsh dependencies - APT handles these transparently
|
|
79
|
+
|
|
80
|
+
### Windows (Native) / Git Bash
|
|
81
|
+
- **Not Supported** - Zsh does not run on native Windows or Git Bash
|
|
82
|
+
- **Alternative:** Use WSL (Windows Subsystem for Linux) with Ubuntu to run Zsh
|
|
83
|
+
|
|
84
|
+
## Prerequisites
|
|
85
|
+
|
|
86
|
+
Before installing Zsh on any platform, ensure:
|
|
87
|
+
|
|
88
|
+
1. **Administrative/sudo privileges** - Required for package installation and shell registration
|
|
89
|
+
2. **Internet connectivity** - Required to download packages from repositories
|
|
90
|
+
3. **Existing shell access** - You need a working terminal to run installation commands
|
|
91
|
+
|
|
92
|
+
## Platform-Specific Installation
|
|
93
|
+
|
|
94
|
+
### macOS (Homebrew)
|
|
95
|
+
|
|
96
|
+
#### Prerequisites
|
|
97
|
+
|
|
98
|
+
- macOS 10.15 (Catalina) or later
|
|
99
|
+
- Terminal access via Terminal.app, iTerm2, or another terminal emulator
|
|
100
|
+
|
|
101
|
+
macOS Catalina and later include Zsh as the default shell. Newly created user accounts automatically use Zsh. Existing user accounts upgraded from older macOS versions may still use Bash and need to be switched manually.
|
|
102
|
+
|
|
103
|
+
**Zsh Versions by macOS Release**:
|
|
104
|
+
- macOS Sonoma (14.x): Zsh 5.9
|
|
105
|
+
- macOS Ventura (13.x): Zsh 5.8.1 - 5.9
|
|
106
|
+
- macOS Monterey (12.x): Zsh 5.8
|
|
107
|
+
- macOS Big Sur (11.x): Zsh 5.8
|
|
108
|
+
- macOS Catalina (10.15): Zsh 5.7.1
|
|
109
|
+
|
|
110
|
+
#### Installation Steps
|
|
111
|
+
|
|
112
|
+
**Step 1: Check if Zsh is already installed and its version**
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
zsh --version
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Expected output (version numbers may vary):
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
zsh 5.9 (x86_64-apple-darwin23.0)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
If Zsh is already installed and you are satisfied with the version, skip to Step 3 to verify or change your default shell.
|
|
125
|
+
|
|
126
|
+
**Step 2: Install or update Zsh via Homebrew (optional)**
|
|
127
|
+
|
|
128
|
+
To install the latest Zsh version from Homebrew (which may be newer than the system version):
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
brew install --quiet zsh
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts.
|
|
135
|
+
|
|
136
|
+
After installation, register the Homebrew Zsh as an allowed shell:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Add Homebrew Zsh to the list of allowed shells
|
|
140
|
+
BREW_ZSH="$(brew --prefix)/bin/zsh"
|
|
141
|
+
echo "$BREW_ZSH" | sudo tee -a /etc/shells >/dev/null
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Note**: On Apple Silicon Macs (M1/M2/M3/M4), the path is `/opt/homebrew/bin/zsh`. On Intel Macs, the path is `/usr/local/bin/zsh`. The command above automatically detects the correct path.
|
|
145
|
+
|
|
146
|
+
**Step 3: Set Zsh as your default shell (if not already)**
|
|
147
|
+
|
|
148
|
+
Check your current default shell:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
echo "$SHELL"
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
If the output is not `/bin/zsh` (or the Homebrew path), set Zsh as your default:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# For system Zsh (recommended for most users)
|
|
158
|
+
sudo chsh -s /bin/zsh "$USER"
|
|
159
|
+
|
|
160
|
+
# Or for Homebrew Zsh (if you installed it in Step 2)
|
|
161
|
+
sudo chsh -s "$(brew --prefix)/bin/zsh" "$USER"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Step 4: Suppress the Bash deprecation warning (for users switching from Bash)**
|
|
165
|
+
|
|
166
|
+
If you occasionally use Bash and want to suppress the deprecation warning, add this line to your `~/.bash_profile`:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
echo 'export BASH_SILENCE_DEPRECATION_WARNING=1' >> ~/.bash_profile
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### Verification
|
|
173
|
+
|
|
174
|
+
Confirm Zsh is installed and configured correctly:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Check the installed version
|
|
178
|
+
zsh --version
|
|
179
|
+
|
|
180
|
+
# Verify the default shell
|
|
181
|
+
echo "$SHELL"
|
|
182
|
+
|
|
183
|
+
# Check if Zsh is in the allowed shells list
|
|
184
|
+
grep zsh /etc/shells
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Expected output for the default shell (on Apple Silicon):
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
/bin/zsh
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Or if using Homebrew Zsh:
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
/opt/homebrew/bin/zsh
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
#### Troubleshooting
|
|
200
|
+
|
|
201
|
+
**Problem**: `chsh: /opt/homebrew/bin/zsh: non-standard shell`
|
|
202
|
+
|
|
203
|
+
**Solution**: The Homebrew Zsh was not added to `/etc/shells`. Add it manually:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
echo "$(brew --prefix)/bin/zsh" | sudo tee -a /etc/shells >/dev/null
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Problem**: Terminal still uses Bash after changing default shell
|
|
210
|
+
|
|
211
|
+
**Solution**: Close all terminal windows and open a new one. The shell change only takes effect in new sessions. You may also need to log out and log back in.
|
|
212
|
+
|
|
213
|
+
**Problem**: Homebrew Zsh not found after installation
|
|
214
|
+
|
|
215
|
+
**Solution**: Homebrew may not be in your PATH. Add it by running:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
# For Apple Silicon Macs
|
|
219
|
+
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
220
|
+
|
|
221
|
+
# For Intel Macs
|
|
222
|
+
eval "$(/usr/local/bin/brew shellenv)"
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Problem**: System shows "The default interactive shell is now zsh" message
|
|
226
|
+
|
|
227
|
+
**Solution**: This informational message appears for existing Bash users. To suppress it, either switch to Zsh as your default shell or add `export BASH_SILENCE_DEPRECATION_WARNING=1` to your `~/.bash_profile`.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
### Ubuntu/Debian (APT)
|
|
232
|
+
|
|
233
|
+
#### Prerequisites
|
|
234
|
+
|
|
235
|
+
- Ubuntu 18.04 or later, or Debian 10 (Buster) or later (64-bit)
|
|
236
|
+
- sudo privileges
|
|
237
|
+
- Terminal access
|
|
238
|
+
|
|
239
|
+
**Zsh Versions by Distribution**:
|
|
240
|
+
- Ubuntu 24.04 LTS: Zsh 5.9
|
|
241
|
+
- Ubuntu 22.04 LTS: Zsh 5.8.1
|
|
242
|
+
- Ubuntu 20.04 LTS: Zsh 5.8
|
|
243
|
+
- Debian 12 (Bookworm): Zsh 5.9
|
|
244
|
+
- Debian 11 (Bullseye): Zsh 5.8
|
|
245
|
+
|
|
246
|
+
#### Installation Steps
|
|
247
|
+
|
|
248
|
+
**Step 1: Update package lists and install Zsh**
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
252
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully non-interactive installation suitable for automation scripts.
|
|
256
|
+
|
|
257
|
+
**Step 2: Verify Zsh installation**
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
zsh --version
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Expected output (version numbers may vary):
|
|
264
|
+
|
|
265
|
+
```
|
|
266
|
+
zsh 5.9 (x86_64-debian-linux-gnu)
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
**Step 3: Set Zsh as your default shell**
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
sudo chsh -s $(which zsh) "$USER"
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Note**: The `chsh` command may prompt for your password. For fully non-interactive automation in scripts (where you have sudo access without a password), you can modify `/etc/passwd` directly:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Step 4: Apply the change**
|
|
282
|
+
|
|
283
|
+
Log out and log back in, or start a new terminal session. Alternatively, start Zsh manually:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
exec zsh
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
#### Verification
|
|
290
|
+
|
|
291
|
+
Confirm Zsh is installed and configured:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# Check the installed version
|
|
295
|
+
zsh --version
|
|
296
|
+
|
|
297
|
+
# Verify Zsh is your default shell
|
|
298
|
+
echo "$SHELL"
|
|
299
|
+
|
|
300
|
+
# Check the shell entry in /etc/passwd
|
|
301
|
+
grep "$USER" /etc/passwd | cut -d: -f7
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Expected output for the default shell:
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
/usr/bin/zsh
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### Troubleshooting
|
|
311
|
+
|
|
312
|
+
**Problem**: `chsh: PAM: Authentication failure`
|
|
313
|
+
|
|
314
|
+
**Solution**: The `chsh` command requires password authentication. Use `usermod` with sudo instead:
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**Problem**: Zsh not loading configuration on login
|
|
321
|
+
|
|
322
|
+
**Solution**: Ensure `~/.zshrc` exists. Create a minimal one if missing:
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
touch ~/.zshrc
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Problem**: `E: Unable to locate package zsh`
|
|
329
|
+
|
|
330
|
+
**Solution**: Update your package lists:
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**Problem**: New Zsh session shows configuration wizard on first run
|
|
337
|
+
|
|
338
|
+
**Solution**: The Zsh configuration wizard (`zsh-newuser-install`) runs when no `.zshrc` exists. Press `q` to quit and create your own configuration, or press `0` to create an empty `.zshrc` file. For non-interactive setup, create the file before first run:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
touch ~/.zshrc
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
### Raspberry Pi OS (APT)
|
|
347
|
+
|
|
348
|
+
#### Prerequisites
|
|
349
|
+
|
|
350
|
+
- Raspberry Pi OS (Bookworm, Bullseye, or Buster) - 32-bit or 64-bit
|
|
351
|
+
- Raspberry Pi 2 or later (Raspberry Pi 3B+ or later recommended for adequate performance)
|
|
352
|
+
- sudo privileges
|
|
353
|
+
- Terminal access (via local monitor/keyboard or SSH)
|
|
354
|
+
|
|
355
|
+
Raspberry Pi OS is based on Debian, so Zsh installation follows the same APT-based process.
|
|
356
|
+
|
|
357
|
+
**Zsh Versions by Raspberry Pi OS Release**:
|
|
358
|
+
- Raspberry Pi OS Bookworm: Zsh 5.9
|
|
359
|
+
- Raspberry Pi OS Bullseye: Zsh 5.8
|
|
360
|
+
- Raspberry Pi OS Buster: Zsh 5.7.1
|
|
361
|
+
|
|
362
|
+
#### Installation Steps
|
|
363
|
+
|
|
364
|
+
**Step 1: Verify your architecture**
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
uname -m
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
- `aarch64` = 64-bit ARM (Raspberry Pi 3/4/5 with 64-bit OS)
|
|
371
|
+
- `armv7l` = 32-bit ARM (Raspberry Pi 2/3/4 with 32-bit OS)
|
|
372
|
+
- `armv6l` = 32-bit ARM (Raspberry Pi Zero/1)
|
|
373
|
+
|
|
374
|
+
All ARM architectures are supported for Zsh.
|
|
375
|
+
|
|
376
|
+
**Step 2: Update package lists and install Zsh**
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
380
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**Step 3: Verify Zsh installation**
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
zsh --version
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
Expected output on 64-bit Raspberry Pi OS:
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
zsh 5.9 (aarch64-unknown-linux-gnu)
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
Or on 32-bit:
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
zsh 5.8 (arm-unknown-linux-gnueabihf)
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
**Step 4: Set Zsh as your default shell**
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**Step 5: Apply the change**
|
|
408
|
+
|
|
409
|
+
Log out and log back in, or start Zsh manually:
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
exec zsh
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
#### Verification
|
|
416
|
+
|
|
417
|
+
Confirm Zsh is installed and configured:
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
# Check the installed version
|
|
421
|
+
zsh --version
|
|
422
|
+
|
|
423
|
+
# Verify Zsh is your default shell
|
|
424
|
+
echo "$SHELL"
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Expected output:
|
|
428
|
+
|
|
429
|
+
```
|
|
430
|
+
/usr/bin/zsh
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
#### Troubleshooting
|
|
434
|
+
|
|
435
|
+
**Problem**: Installation is very slow
|
|
436
|
+
|
|
437
|
+
**Solution**: Raspberry Pi SD cards can be slow. Use a high-quality SD card (Class 10 or A1/A2 rated) or boot from USB/SSD for better performance. For headless installations over slow networks, be patient with package downloads.
|
|
438
|
+
|
|
439
|
+
**Problem**: Package manager lock file errors
|
|
440
|
+
|
|
441
|
+
**Solution**: Another process may be using apt. Wait for it to complete or remove stale lock files:
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
sudo rm -f /var/lib/apt/lists/lock /var/cache/apt/archives/lock /var/lib/dpkg/lock*
|
|
445
|
+
sudo dpkg --configure -a
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
**Problem**: Zsh prompts are slow to render
|
|
449
|
+
|
|
450
|
+
**Solution**: Complex Zsh prompts (especially those with git status) can be slow on older Raspberry Pi models. Use a simpler prompt configuration:
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
# Add to ~/.zshrc for a minimal prompt
|
|
454
|
+
PROMPT='%n@%m:%~%# '
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
### Amazon Linux / RHEL / Fedora (DNF/YUM)
|
|
460
|
+
|
|
461
|
+
#### Prerequisites
|
|
462
|
+
|
|
463
|
+
- Amazon Linux 2023 (AL2023), Amazon Linux 2 (AL2), RHEL 8+, or Fedora 38+
|
|
464
|
+
- sudo privileges
|
|
465
|
+
- Terminal access
|
|
466
|
+
|
|
467
|
+
**Zsh Versions by Distribution**:
|
|
468
|
+
- Amazon Linux 2023: Zsh 5.9
|
|
469
|
+
- Amazon Linux 2: Zsh 5.8.1
|
|
470
|
+
- RHEL 9: Zsh 5.8
|
|
471
|
+
- RHEL 8: Zsh 5.5.1
|
|
472
|
+
- Fedora 39/40: Zsh 5.9
|
|
473
|
+
|
|
474
|
+
**Package Manager Notes**:
|
|
475
|
+
- Amazon Linux 2023, RHEL 8+, and Fedora use DNF
|
|
476
|
+
- Amazon Linux 2 and RHEL 7 use YUM
|
|
477
|
+
- Amazon Linux 2023 provides a `yum` symlink that points to `dnf` for compatibility
|
|
478
|
+
|
|
479
|
+
#### Installation Steps
|
|
480
|
+
|
|
481
|
+
**Step 1: Install Zsh**
|
|
482
|
+
|
|
483
|
+
For Amazon Linux 2023 / RHEL 8+ / Fedora (DNF):
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
sudo dnf install -y zsh
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
For Amazon Linux 2 / RHEL 7 (YUM):
|
|
490
|
+
|
|
491
|
+
```bash
|
|
492
|
+
sudo yum install -y zsh
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
|
|
496
|
+
|
|
497
|
+
**Step 2: Verify Zsh installation**
|
|
498
|
+
|
|
499
|
+
```bash
|
|
500
|
+
zsh --version
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
Expected output (version numbers may vary):
|
|
504
|
+
|
|
505
|
+
```
|
|
506
|
+
zsh 5.9 (x86_64-redhat-linux-gnu)
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
**Step 3: Set Zsh as your default shell**
|
|
510
|
+
|
|
511
|
+
For Amazon Linux / RHEL:
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
For Fedora (recent versions may require `lchsh`):
|
|
518
|
+
|
|
519
|
+
```bash
|
|
520
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
**Note**: Some Fedora versions use `lchsh` instead of `chsh`. If `chsh` prompts for a password in automation scripts, use `usermod` with sudo as shown above.
|
|
524
|
+
|
|
525
|
+
**Step 4: Apply the change**
|
|
526
|
+
|
|
527
|
+
Log out and log back in, or start Zsh manually:
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
exec zsh
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
#### Verification
|
|
534
|
+
|
|
535
|
+
Confirm Zsh is installed and configured:
|
|
536
|
+
|
|
537
|
+
```bash
|
|
538
|
+
# Check the installed version
|
|
539
|
+
zsh --version
|
|
540
|
+
|
|
541
|
+
# Verify Zsh is your default shell
|
|
542
|
+
echo "$SHELL"
|
|
543
|
+
|
|
544
|
+
# Check the shell entry for your user
|
|
545
|
+
grep "$USER" /etc/passwd | cut -d: -f7
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
Expected output for the default shell:
|
|
549
|
+
|
|
550
|
+
```
|
|
551
|
+
/usr/bin/zsh
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
#### Troubleshooting
|
|
555
|
+
|
|
556
|
+
**Problem**: `No match for argument: zsh` on Amazon Linux 2
|
|
557
|
+
|
|
558
|
+
**Solution**: Update the yum cache and retry:
|
|
559
|
+
|
|
560
|
+
```bash
|
|
561
|
+
sudo yum makecache
|
|
562
|
+
sudo yum install -y zsh
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
**Problem**: `chsh: command not found` on some minimal installations
|
|
566
|
+
|
|
567
|
+
**Solution**: Install the `util-linux-user` package which provides `chsh`:
|
|
568
|
+
|
|
569
|
+
```bash
|
|
570
|
+
# DNF-based systems
|
|
571
|
+
sudo dnf install -y util-linux-user
|
|
572
|
+
|
|
573
|
+
# YUM-based systems
|
|
574
|
+
sudo yum install -y util-linux-user
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
Alternatively, use `usermod` which is always available:
|
|
578
|
+
|
|
579
|
+
```bash
|
|
580
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
**Problem**: `lchsh: command not found` on Fedora
|
|
584
|
+
|
|
585
|
+
**Solution**: Use `chsh` or `usermod` instead:
|
|
586
|
+
|
|
587
|
+
```bash
|
|
588
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
**Problem**: EC2 default user (ec2-user) cannot change shell
|
|
592
|
+
|
|
593
|
+
**Solution**: On EC2 instances, you may need to set a password for the user first, or use `usermod` with sudo:
|
|
594
|
+
|
|
595
|
+
```bash
|
|
596
|
+
sudo usermod --shell $(which zsh) ec2-user
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
---
|
|
600
|
+
|
|
601
|
+
### WSL (Ubuntu)
|
|
602
|
+
|
|
603
|
+
#### Prerequisites
|
|
604
|
+
|
|
605
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
606
|
+
- WSL 2 enabled with Ubuntu distribution installed
|
|
607
|
+
- sudo privileges within the WSL distribution
|
|
608
|
+
|
|
609
|
+
WSL provides a full Linux environment where Zsh runs natively. The installation follows the Ubuntu/Debian process.
|
|
610
|
+
|
|
611
|
+
#### Installation Steps
|
|
612
|
+
|
|
613
|
+
**Step 1: Open WSL Ubuntu terminal**
|
|
614
|
+
|
|
615
|
+
From Windows, open PowerShell or Command Prompt and run:
|
|
616
|
+
|
|
617
|
+
```powershell
|
|
618
|
+
wsl
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
Or open the Ubuntu app from the Start menu.
|
|
622
|
+
|
|
623
|
+
**Step 2: Update package lists and install Zsh**
|
|
624
|
+
|
|
625
|
+
Within WSL Ubuntu:
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
629
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
**Step 3: Verify Zsh installation**
|
|
633
|
+
|
|
634
|
+
```bash
|
|
635
|
+
zsh --version
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
Expected output (version numbers may vary):
|
|
639
|
+
|
|
640
|
+
```
|
|
641
|
+
zsh 5.9 (x86_64-ubuntu-linux-gnu)
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
**Step 4: Set Zsh as your default shell**
|
|
645
|
+
|
|
646
|
+
```bash
|
|
647
|
+
sudo usermod --shell $(which zsh) "$USER"
|
|
648
|
+
```
|
|
649
|
+
|
|
650
|
+
**Step 5: Configure WSL to start Zsh automatically**
|
|
651
|
+
|
|
652
|
+
WSL may not always respect the default shell setting. Add the following to the end of your `~/.bashrc` to ensure Zsh starts:
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
cat >> ~/.bashrc << 'EOF'
|
|
656
|
+
|
|
657
|
+
# Auto-launch Zsh in WSL
|
|
658
|
+
if [ -t 1 ] && [ -x /usr/bin/zsh ]; then
|
|
659
|
+
exec /usr/bin/zsh
|
|
660
|
+
fi
|
|
661
|
+
EOF
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
This snippet checks if the session is interactive (`-t 1`) and if Zsh is executable, then replaces Bash with Zsh.
|
|
665
|
+
|
|
666
|
+
**Step 6: Restart WSL**
|
|
667
|
+
|
|
668
|
+
Close all WSL terminals and restart WSL from PowerShell:
|
|
669
|
+
|
|
670
|
+
```powershell
|
|
671
|
+
wsl --shutdown
|
|
672
|
+
wsl
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
#### Verification
|
|
676
|
+
|
|
677
|
+
Confirm Zsh is installed and running:
|
|
678
|
+
|
|
679
|
+
```bash
|
|
680
|
+
# Check the Zsh version
|
|
681
|
+
zsh --version
|
|
682
|
+
|
|
683
|
+
# Verify the current shell
|
|
684
|
+
echo $0
|
|
685
|
+
|
|
686
|
+
# Check the configured default shell
|
|
687
|
+
echo "$SHELL"
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
Expected output for `echo $0`:
|
|
691
|
+
|
|
692
|
+
```
|
|
693
|
+
zsh
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
#### Troubleshooting
|
|
697
|
+
|
|
698
|
+
**Problem**: WSL still starts Bash instead of Zsh
|
|
699
|
+
|
|
700
|
+
**Solution**: Add the auto-launch snippet to `~/.bashrc` as shown in Step 5. WSL sometimes ignores the system default shell setting.
|
|
701
|
+
|
|
702
|
+
**Problem**: Windows Terminal shows Bash prompt briefly before Zsh
|
|
703
|
+
|
|
704
|
+
**Solution**: This is expected behavior when using the `~/.bashrc` auto-launch method. The brief Bash initialization is normal.
|
|
705
|
+
|
|
706
|
+
**Problem**: Zsh configuration not loading
|
|
707
|
+
|
|
708
|
+
**Solution**: Create a `~/.zshrc` file if it does not exist:
|
|
709
|
+
|
|
710
|
+
```bash
|
|
711
|
+
touch ~/.zshrc
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
**Problem**: `apt-get update` fails inside WSL
|
|
715
|
+
|
|
716
|
+
**Solution**: DNS resolution may be failing. Create or modify `/etc/wsl.conf`:
|
|
717
|
+
|
|
718
|
+
```bash
|
|
719
|
+
sudo tee /etc/wsl.conf > /dev/null << 'EOF'
|
|
720
|
+
[network]
|
|
721
|
+
generateResolvConf = false
|
|
722
|
+
EOF
|
|
723
|
+
|
|
724
|
+
sudo rm -f /etc/resolv.conf
|
|
725
|
+
sudo tee /etc/resolv.conf > /dev/null << 'EOF'
|
|
726
|
+
nameserver 8.8.8.8
|
|
727
|
+
nameserver 8.8.4.4
|
|
728
|
+
EOF
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
Restart WSL from PowerShell:
|
|
732
|
+
|
|
733
|
+
```powershell
|
|
734
|
+
wsl --shutdown
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
|
|
739
|
+
### Windows (Native) - Not Supported
|
|
740
|
+
|
|
741
|
+
#### Platform Status
|
|
742
|
+
|
|
743
|
+
Zsh is **not supported** on native Windows environments (PowerShell, Command Prompt).
|
|
744
|
+
|
|
745
|
+
Zsh is a Unix shell that requires a POSIX-compatible environment. Windows does not natively provide this environment.
|
|
746
|
+
|
|
747
|
+
#### Recommended Alternative
|
|
748
|
+
|
|
749
|
+
Use WSL (Windows Subsystem for Linux) to run Zsh on Windows. WSL provides a full Linux environment where Zsh runs natively.
|
|
750
|
+
|
|
751
|
+
To install WSL from an Administrator PowerShell:
|
|
752
|
+
|
|
753
|
+
```powershell
|
|
754
|
+
wsl --install
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
After installation and reboot, follow the WSL (Ubuntu) installation steps above.
|
|
758
|
+
|
|
759
|
+
---
|
|
760
|
+
|
|
761
|
+
### Git Bash - Not Supported
|
|
762
|
+
|
|
763
|
+
#### Platform Status
|
|
764
|
+
|
|
765
|
+
Zsh is **not supported** in Git Bash on Windows.
|
|
766
|
+
|
|
767
|
+
Git Bash uses a MinGW-based environment that provides Bash, not Zsh. While Git Bash includes many Unix utilities, it does not support alternative shells like Zsh.
|
|
768
|
+
|
|
769
|
+
#### Recommended Alternatives
|
|
770
|
+
|
|
771
|
+
**Option 1: Use WSL (Windows Subsystem for Linux)**
|
|
772
|
+
|
|
773
|
+
WSL provides a full Linux environment where you can install and use Zsh. See the WSL installation section above.
|
|
774
|
+
|
|
775
|
+
```powershell
|
|
776
|
+
wsl --install
|
|
777
|
+
```
|
|
778
|
+
|
|
779
|
+
**Option 2: Continue using Bash with enhancements**
|
|
780
|
+
|
|
781
|
+
If you prefer to stay in Git Bash, consider enhancing it with:
|
|
782
|
+
|
|
783
|
+
- [Oh My Bash](https://github.com/ohmybash/oh-my-bash) - A framework similar to Oh My Zsh but for Bash:
|
|
784
|
+
|
|
785
|
+
```bash
|
|
786
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
**Option 3: Use PowerShell with Oh My Posh**
|
|
790
|
+
|
|
791
|
+
For a modern Windows shell experience, consider [Oh My Posh](https://ohmyposh.dev/) with PowerShell:
|
|
792
|
+
|
|
793
|
+
```powershell
|
|
794
|
+
winget install --id JanDeDobbeleer.OhMyPosh --silent --accept-package-agreements --accept-source-agreements
|
|
795
|
+
```
|
|
796
|
+
|
|
797
|
+
---
|
|
798
|
+
|
|
799
|
+
## Post-Installation Configuration
|
|
800
|
+
|
|
801
|
+
After installing Zsh on any platform, consider these common configuration steps.
|
|
802
|
+
|
|
803
|
+
### Create Shell Configuration Files
|
|
804
|
+
|
|
805
|
+
Zsh reads configuration files in a specific order. Create these files if they do not exist:
|
|
806
|
+
|
|
807
|
+
```bash
|
|
808
|
+
# Main configuration file (loaded for interactive shells)
|
|
809
|
+
touch ~/.zshrc
|
|
810
|
+
|
|
811
|
+
# Environment variables (loaded for all shells, including scripts)
|
|
812
|
+
touch ~/.zshenv
|
|
813
|
+
|
|
814
|
+
# Login shell configuration
|
|
815
|
+
touch ~/.zprofile
|
|
816
|
+
```
|
|
817
|
+
|
|
818
|
+
### Set Common Environment Variables
|
|
819
|
+
|
|
820
|
+
Add useful environment variables to your `~/.zshrc`:
|
|
821
|
+
|
|
822
|
+
```bash
|
|
823
|
+
cat >> ~/.zshrc << 'EOF'
|
|
824
|
+
|
|
825
|
+
# History configuration
|
|
826
|
+
export HISTSIZE=10000
|
|
827
|
+
export HISTFILESIZE=20000
|
|
828
|
+
export SAVEHIST=10000
|
|
829
|
+
export HISTFILE=~/.zsh_history
|
|
830
|
+
setopt SHARE_HISTORY # Share history between sessions
|
|
831
|
+
setopt HIST_IGNORE_DUPS # Ignore duplicate commands
|
|
832
|
+
setopt HIST_IGNORE_SPACE # Ignore commands starting with space
|
|
833
|
+
|
|
834
|
+
# Better defaults
|
|
835
|
+
export EDITOR=vim
|
|
836
|
+
export VISUAL=vim
|
|
837
|
+
export PAGER=less
|
|
838
|
+
|
|
839
|
+
# Enable colors
|
|
840
|
+
autoload -U colors && colors
|
|
841
|
+
EOF
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
### Enable Zsh Completion System
|
|
845
|
+
|
|
846
|
+
Zsh has a powerful completion system. Enable it by adding to `~/.zshrc`:
|
|
847
|
+
|
|
848
|
+
```bash
|
|
849
|
+
cat >> ~/.zshrc << 'EOF'
|
|
850
|
+
|
|
851
|
+
# Enable completion system
|
|
852
|
+
autoload -Uz compinit && compinit
|
|
853
|
+
|
|
854
|
+
# Case-insensitive completion
|
|
855
|
+
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
|
856
|
+
|
|
857
|
+
# Menu-style completion
|
|
858
|
+
zstyle ':completion:*' menu select
|
|
859
|
+
EOF
|
|
860
|
+
```
|
|
861
|
+
|
|
862
|
+
### Install Oh My Zsh (Optional)
|
|
863
|
+
|
|
864
|
+
Oh My Zsh is a popular framework that provides themes, plugins, and helpful defaults:
|
|
865
|
+
|
|
866
|
+
```bash
|
|
867
|
+
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
|
868
|
+
```
|
|
869
|
+
|
|
870
|
+
The `--unattended` flag enables non-interactive installation suitable for automation.
|
|
871
|
+
|
|
872
|
+
For detailed Oh My Zsh configuration, see the [Oh My Zsh documentation](https://github.com/ohmyzsh/ohmyzsh/wiki).
|
|
873
|
+
|
|
874
|
+
### Verify Configuration
|
|
875
|
+
|
|
876
|
+
After making changes, reload your configuration:
|
|
877
|
+
|
|
878
|
+
```bash
|
|
879
|
+
source ~/.zshrc
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
Check that your settings are applied:
|
|
883
|
+
|
|
884
|
+
```bash
|
|
885
|
+
echo "HISTSIZE: $HISTSIZE"
|
|
886
|
+
echo "EDITOR: $EDITOR"
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
---
|
|
890
|
+
|
|
891
|
+
## Common Issues
|
|
892
|
+
|
|
893
|
+
### Issue: Scripts Written for Bash Fail in Zsh
|
|
894
|
+
|
|
895
|
+
**Symptoms**: Shell scripts with `#!/bin/bash` work, but scripts with `#!/bin/sh` or no shebang fail with syntax errors.
|
|
896
|
+
|
|
897
|
+
**Solution**: Zsh is not fully compatible with Bash or POSIX sh. Ensure scripts have the correct shebang:
|
|
898
|
+
|
|
899
|
+
```bash
|
|
900
|
+
#!/bin/bash
|
|
901
|
+
# For Bash scripts
|
|
902
|
+
|
|
903
|
+
#!/bin/zsh
|
|
904
|
+
# For Zsh scripts
|
|
905
|
+
|
|
906
|
+
#!/bin/sh
|
|
907
|
+
# For POSIX-compliant scripts
|
|
908
|
+
```
|
|
909
|
+
|
|
910
|
+
Running scripts with an explicit interpreter bypasses the shell:
|
|
911
|
+
|
|
912
|
+
```bash
|
|
913
|
+
bash ./script.sh
|
|
914
|
+
zsh ./script.zsh
|
|
915
|
+
```
|
|
916
|
+
|
|
917
|
+
### Issue: Zsh Completion Not Working
|
|
918
|
+
|
|
919
|
+
**Symptoms**: Tab completion does not work or shows errors.
|
|
920
|
+
|
|
921
|
+
**Solution**: Initialize the completion system in your `~/.zshrc`:
|
|
922
|
+
|
|
923
|
+
```bash
|
|
924
|
+
autoload -Uz compinit && compinit
|
|
925
|
+
```
|
|
926
|
+
|
|
927
|
+
If you see "insecure directories" warnings:
|
|
928
|
+
|
|
929
|
+
```bash
|
|
930
|
+
compaudit | xargs chmod g-w,o-w
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
### Issue: Arrow Keys Print Escape Codes
|
|
934
|
+
|
|
935
|
+
**Symptoms**: Arrow keys print `^[[A`, `^[[B`, etc. instead of navigating history.
|
|
936
|
+
|
|
937
|
+
**Solution**: Add key bindings to `~/.zshrc`:
|
|
938
|
+
|
|
939
|
+
```bash
|
|
940
|
+
# Use Emacs-style key bindings
|
|
941
|
+
bindkey -e
|
|
942
|
+
|
|
943
|
+
# Or explicitly bind arrow keys
|
|
944
|
+
bindkey '^[[A' up-line-or-history
|
|
945
|
+
bindkey '^[[B' down-line-or-history
|
|
946
|
+
bindkey '^[[C' forward-char
|
|
947
|
+
bindkey '^[[D' backward-char
|
|
948
|
+
```
|
|
949
|
+
|
|
950
|
+
### Issue: Environment Variables from Bash Not Available
|
|
951
|
+
|
|
952
|
+
**Symptoms**: Variables set in `~/.bashrc` or `~/.bash_profile` are not available in Zsh.
|
|
953
|
+
|
|
954
|
+
**Solution**: Zsh uses different configuration files. Move or copy your environment variable exports to `~/.zshrc` or `~/.zshenv`:
|
|
955
|
+
|
|
956
|
+
```bash
|
|
957
|
+
# Copy relevant exports from Bash config to Zsh config
|
|
958
|
+
grep '^export' ~/.bashrc >> ~/.zshrc
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
### Issue: PATH Differs Between Bash and Zsh
|
|
962
|
+
|
|
963
|
+
**Symptoms**: Commands available in Bash are not found in Zsh.
|
|
964
|
+
|
|
965
|
+
**Solution**: Check and update your PATH in `~/.zshrc`:
|
|
966
|
+
|
|
967
|
+
```bash
|
|
968
|
+
# Add common paths
|
|
969
|
+
export PATH="$HOME/bin:/usr/local/bin:$PATH"
|
|
970
|
+
|
|
971
|
+
# For Homebrew on Apple Silicon
|
|
972
|
+
export PATH="/opt/homebrew/bin:$PATH"
|
|
973
|
+
```
|
|
974
|
+
|
|
975
|
+
### Issue: Shell Prompt Is Plain or Missing Colors
|
|
976
|
+
|
|
977
|
+
**Symptoms**: Zsh prompt shows `%` without colors or customization.
|
|
978
|
+
|
|
979
|
+
**Solution**: Configure a prompt in `~/.zshrc`:
|
|
980
|
+
|
|
981
|
+
```bash
|
|
982
|
+
# Simple colorful prompt
|
|
983
|
+
PROMPT='%F{green}%n@%m%f:%F{blue}%~%f%# '
|
|
984
|
+
|
|
985
|
+
# Or enable colors first
|
|
986
|
+
autoload -U colors && colors
|
|
987
|
+
PROMPT="%{$fg[green]%}%n@%m%{$reset_color%}:%{$fg[blue]%}%~%{$reset_color%}%# "
|
|
988
|
+
```
|
|
989
|
+
|
|
990
|
+
Or install Oh My Zsh for pre-configured themes.
|
|
991
|
+
|
|
992
|
+
---
|
|
993
|
+
|
|
994
|
+
## References
|
|
995
|
+
|
|
996
|
+
- [Zsh Official Website](https://www.zsh.org/)
|
|
997
|
+
- [Zsh Official Manual](https://zsh.sourceforge.io/Doc/Release/index.html)
|
|
998
|
+
- [Zsh SourceForge Project](https://zsh.sourceforge.io/)
|
|
999
|
+
- [Oh My Zsh Wiki - Installing Zsh](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH)
|
|
1000
|
+
- [Arch Wiki - Zsh](https://wiki.archlinux.org/title/Zsh)
|
|
1001
|
+
- [Apple Terminal - Change Default Shell](https://support.apple.com/guide/terminal/change-the-default-shell-trml113/mac)
|
|
1002
|
+
- [Homebrew Zsh Formula](https://formulae.brew.sh/formula/zsh)
|
|
1003
|
+
- [Ubuntu Zsh Package](https://packages.ubuntu.com/zsh)
|
|
1004
|
+
- [Fedora Magazine - Set Up Zsh](https://fedoramagazine.org/set-zsh-fedora-system/)
|
|
1005
|
+
- [Amazon Linux Package Management](https://docs.aws.amazon.com/linux/al2023/ug/package-management.html)
|
|
1006
|
+
- [Microsoft WSL Documentation](https://learn.microsoft.com/en-us/windows/wsl/install)
|
|
1007
|
+
- [Oh My Zsh](https://ohmyz.sh/)
|
|
1008
|
+
- [Zsh Users - GitHub Organization](https://github.com/zsh-users)
|