@fredlackey/devutils 0.0.11 → 0.0.13
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/brave-browser.js +968 -0
- package/src/installs/brave-browser.md +650 -0
- package/src/installs/chrome-canary.js +27 -98
- package/src/installs/chromium.js +5 -1
- package/src/installs/dependencies.md +17 -7
- package/src/installs/installers.json +837 -76
- 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,1094 @@
|
|
|
1
|
+
# Installing Oh My Zsh
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Oh My Zsh is an open-source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, plugins, themes, and features that make working in the terminal more efficient and enjoyable. With over 2,400 contributors and 300+ plugins, Oh My Zsh has become the most popular Zsh configuration framework.
|
|
6
|
+
|
|
7
|
+
Oh My Zsh provides:
|
|
8
|
+
|
|
9
|
+
- **300+ plugins** for common tools (git, docker, npm, kubectl, aws, and many more)
|
|
10
|
+
- **140+ themes** for customizing your terminal prompt appearance
|
|
11
|
+
- **Auto-update mechanism** to keep your installation current
|
|
12
|
+
- **Plugin management** for easy addition and removal of functionality
|
|
13
|
+
- **Aliases and functions** for common commands and workflows
|
|
14
|
+
|
|
15
|
+
This guide documents Oh My Zsh installation procedures for all platforms supported by DevUtils CLI. Because Oh My Zsh is a Zsh configuration framework, Zsh must be installed as a prerequisite on all platforms.
|
|
16
|
+
|
|
17
|
+
## Dependencies
|
|
18
|
+
|
|
19
|
+
### macOS (Homebrew)
|
|
20
|
+
- **Required:**
|
|
21
|
+
- `zsh` - Pre-installed on macOS 10.15 (Catalina) and later as the default shell. For older macOS versions, install via `brew install --quiet zsh`
|
|
22
|
+
- `curl` - Pre-installed on macOS. For the latest version, install via `brew install --quiet curl` or run `dev install curl`
|
|
23
|
+
- `git` - Pre-installed via Xcode Command Line Tools or install via `brew install --quiet git` or run `dev install git`
|
|
24
|
+
- **Optional:** None
|
|
25
|
+
- **Auto-installed:**
|
|
26
|
+
- Oh My Zsh plugins directory structure
|
|
27
|
+
- Default `.zshrc` configuration file (backs up existing `.zshrc` to `.zshrc.pre-oh-my-zsh`)
|
|
28
|
+
|
|
29
|
+
### Ubuntu/Debian (APT)
|
|
30
|
+
- **Required:**
|
|
31
|
+
- `zsh` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh`
|
|
32
|
+
- `curl` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl` or run `dev install curl`
|
|
33
|
+
- `git` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git` or run `dev install git`
|
|
34
|
+
- **Optional:** None
|
|
35
|
+
- **Auto-installed:**
|
|
36
|
+
- Oh My Zsh plugins directory structure
|
|
37
|
+
- Default `.zshrc` configuration file
|
|
38
|
+
|
|
39
|
+
### Raspberry Pi OS (APT)
|
|
40
|
+
- **Required:**
|
|
41
|
+
- `zsh` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh`
|
|
42
|
+
- `curl` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl` or run `dev install curl`
|
|
43
|
+
- `git` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git` or run `dev install git`
|
|
44
|
+
- **Optional:** None
|
|
45
|
+
- **Auto-installed:**
|
|
46
|
+
- Oh My Zsh plugins directory structure
|
|
47
|
+
- Default `.zshrc` configuration file
|
|
48
|
+
|
|
49
|
+
### Amazon Linux/RHEL/Fedora (DNF/YUM)
|
|
50
|
+
- **Required:**
|
|
51
|
+
- `zsh` - Install via `sudo dnf install -y zsh` (AL2023/RHEL 8+/Fedora) or `sudo yum install -y zsh` (AL2/RHEL 7)
|
|
52
|
+
- `curl` - Install via `sudo dnf install -y curl` or `sudo yum install -y curl` or run `dev install curl`
|
|
53
|
+
- `git` - Install via `sudo dnf install -y git` or `sudo yum install -y git` or run `dev install git`
|
|
54
|
+
- **Optional:** None
|
|
55
|
+
- **Auto-installed:**
|
|
56
|
+
- Oh My Zsh plugins directory structure
|
|
57
|
+
- Default `.zshrc` configuration file
|
|
58
|
+
|
|
59
|
+
### WSL (Ubuntu)
|
|
60
|
+
- **Required:**
|
|
61
|
+
- `zsh` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh`
|
|
62
|
+
- `curl` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl` or run `dev install curl`
|
|
63
|
+
- `git` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git` or run `dev install git`
|
|
64
|
+
- **Optional:** None
|
|
65
|
+
- **Auto-installed:**
|
|
66
|
+
- Oh My Zsh plugins directory structure
|
|
67
|
+
- Default `.zshrc` configuration file
|
|
68
|
+
|
|
69
|
+
**Note**: Oh My Zsh is not supported on native Windows (PowerShell, Command Prompt) or Git Bash environments. For Windows users, install Oh My Zsh within WSL (Windows Subsystem for Linux) instead.
|
|
70
|
+
|
|
71
|
+
## Prerequisites
|
|
72
|
+
|
|
73
|
+
Before installing Oh My Zsh on any platform, ensure:
|
|
74
|
+
|
|
75
|
+
1. **Internet connectivity** - Required to download Oh My Zsh from GitHub
|
|
76
|
+
2. **Terminal access** - Command line interface to run installation commands
|
|
77
|
+
3. **sudo privileges** - Required for installing Zsh if not already present (Linux platforms)
|
|
78
|
+
4. **Zsh shell** - Must be installed before Oh My Zsh (installation steps provided below)
|
|
79
|
+
5. **curl or wget** - Required for downloading the installation script
|
|
80
|
+
6. **git** - Required for cloning the Oh My Zsh repository
|
|
81
|
+
|
|
82
|
+
**Important**: The Oh My Zsh installer will:
|
|
83
|
+
- Back up your existing `~/.zshrc` to `~/.zshrc.pre-oh-my-zsh`
|
|
84
|
+
- Create a new `~/.zshrc` with Oh My Zsh configuration
|
|
85
|
+
- Clone the Oh My Zsh repository to `~/.oh-my-zsh`
|
|
86
|
+
|
|
87
|
+
## Platform-Specific Installation
|
|
88
|
+
|
|
89
|
+
### macOS (Homebrew)
|
|
90
|
+
|
|
91
|
+
#### Prerequisites
|
|
92
|
+
|
|
93
|
+
- macOS 10.15 (Catalina) or later (macOS 14 Sonoma or later recommended)
|
|
94
|
+
- Homebrew package manager installed
|
|
95
|
+
- Terminal access via Terminal.app or iTerm2
|
|
96
|
+
|
|
97
|
+
macOS 10.15 (Catalina) and later include Zsh as the default shell. You can verify this by running `echo $SHELL`. If it shows `/bin/zsh`, Zsh is already your default shell.
|
|
98
|
+
|
|
99
|
+
If Homebrew is not installed, install it first:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
#### Installation Steps
|
|
106
|
+
|
|
107
|
+
**Step 1: Verify Zsh is installed and set as default shell**
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
zsh --version
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Expected output (version numbers may vary):
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
zsh 5.9 (x86_64-apple-darwin23.0)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
If Zsh is not installed (older macOS versions), install it:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
brew install --quiet zsh
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Step 2: Ensure curl and git are available**
|
|
126
|
+
|
|
127
|
+
These are typically pre-installed on macOS. Verify:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
curl --version && git --version
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
If either is missing, install via Homebrew:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
brew install --quiet curl git
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Step 3: Install Oh My Zsh non-interactively**
|
|
140
|
+
|
|
141
|
+
Run the following command for a fully unattended installation:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The `--unattended` flag:
|
|
148
|
+
- Prevents the installer from changing your default shell automatically
|
|
149
|
+
- Does not launch Zsh after installation
|
|
150
|
+
- Enables fully non-interactive execution suitable for scripts and automation
|
|
151
|
+
|
|
152
|
+
**Step 4: Set Zsh as your default shell (if not already)**
|
|
153
|
+
|
|
154
|
+
Check your current default shell:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
echo $SHELL
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
If it does not show `/bin/zsh`, set Zsh as your default:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
sudo chsh -s /bin/zsh $(whoami)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Step 5: Apply the configuration**
|
|
167
|
+
|
|
168
|
+
Start a new Zsh session or source the configuration:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
source ~/.zshrc
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
#### Verification
|
|
175
|
+
|
|
176
|
+
Confirm Oh My Zsh is installed correctly:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
ls ~/.oh-my-zsh
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Expected output should show directories including `plugins`, `themes`, `lib`, `templates`, and others.
|
|
183
|
+
|
|
184
|
+
Verify the Oh My Zsh configuration is loaded:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
echo $ZSH
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Expected output:
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
/Users/<your-username>/.oh-my-zsh
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Check that plugins and themes are available:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
ls ~/.oh-my-zsh/plugins | head -10
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
This should list plugin directories like `git`, `docker`, `npm`, etc.
|
|
203
|
+
|
|
204
|
+
#### Troubleshooting
|
|
205
|
+
|
|
206
|
+
**Problem**: `zsh: command not found: omz` after installation
|
|
207
|
+
|
|
208
|
+
**Solution**: Oh My Zsh does not provide an `omz` command by default in older versions. Source your configuration:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
source ~/.zshrc
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Problem**: Existing `.zshrc` customizations are lost
|
|
215
|
+
|
|
216
|
+
**Solution**: Oh My Zsh backs up your original configuration. Restore customizations from the backup:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
cat ~/.zshrc.pre-oh-my-zsh
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Copy any custom settings from the backup into your new `~/.zshrc` file.
|
|
223
|
+
|
|
224
|
+
**Problem**: Oh My Zsh installation fails with "git clone failed"
|
|
225
|
+
|
|
226
|
+
**Solution**: Ensure git is installed and you have internet connectivity:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
brew install --quiet git
|
|
230
|
+
ping -c 3 github.com
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Problem**: Themes or prompts do not display correctly (missing symbols)
|
|
234
|
+
|
|
235
|
+
**Solution**: Install a Nerd Font or Powerline-compatible font. Many Oh My Zsh themes require special font glyphs. Install a compatible font:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
brew tap homebrew/cask-fonts
|
|
239
|
+
brew install --cask font-meslo-lg-nerd-font
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Then configure your terminal to use the installed font.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
### Ubuntu/Debian (APT)
|
|
247
|
+
|
|
248
|
+
#### Prerequisites
|
|
249
|
+
|
|
250
|
+
- Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
|
|
251
|
+
- sudo privileges
|
|
252
|
+
- Internet connectivity
|
|
253
|
+
|
|
254
|
+
Ubuntu and Debian use Bash as the default shell. You must install Zsh before installing Oh My Zsh.
|
|
255
|
+
|
|
256
|
+
#### Installation Steps
|
|
257
|
+
|
|
258
|
+
**Step 1: Update package lists and install Zsh**
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
262
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Verify Zsh installation:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
zsh --version
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Expected output (version numbers may vary):
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
zsh 5.9 (x86_64-ubuntu-linux-gnu)
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Step 2: Install curl and git**
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl git
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Step 3: Install Oh My Zsh non-interactively**
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Step 4: Set Zsh as your default shell**
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
sudo chsh -s $(which zsh) $(whoami)
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**Step 5: Start a new Zsh session**
|
|
296
|
+
|
|
297
|
+
Log out and log back in, or start a new terminal session. Alternatively, start Zsh manually:
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
zsh
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Then source the configuration:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
source ~/.zshrc
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
#### Verification
|
|
310
|
+
|
|
311
|
+
Confirm Oh My Zsh is installed:
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
ls ~/.oh-my-zsh
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Expected output should show directories including `plugins`, `themes`, `lib`, `templates`.
|
|
318
|
+
|
|
319
|
+
Verify the ZSH variable is set:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
echo $ZSH
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Expected output:
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
/home/<your-username>/.oh-my-zsh
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Verify Zsh is your default shell:
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
echo $SHELL
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Expected output:
|
|
338
|
+
|
|
339
|
+
```
|
|
340
|
+
/usr/bin/zsh
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
#### Troubleshooting
|
|
344
|
+
|
|
345
|
+
**Problem**: `chsh: PAM: Authentication failure`
|
|
346
|
+
|
|
347
|
+
**Solution**: The `chsh` command requires your password. For automated scripts, you can modify `/etc/passwd` directly with sudo:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
sudo sed -i "s|$(whoami):/bin/bash|$(whoami):$(which zsh)|" /etc/passwd
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
**Problem**: Oh My Zsh is not loaded in new sessions
|
|
354
|
+
|
|
355
|
+
**Solution**: Ensure Zsh is your default shell and `.zshrc` exists:
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
cat ~/.zshrc | head -5
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
The file should contain `export ZSH="$HOME/.oh-my-zsh"` near the top.
|
|
362
|
+
|
|
363
|
+
**Problem**: `E: Unable to locate package zsh`
|
|
364
|
+
|
|
365
|
+
**Solution**: Update your package lists:
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Problem**: Slow shell startup after installing Oh My Zsh
|
|
372
|
+
|
|
373
|
+
**Solution**: Disable plugins you do not use. Edit `~/.zshrc` and reduce the plugins list:
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
# In ~/.zshrc, change:
|
|
377
|
+
plugins=(git)
|
|
378
|
+
# Instead of:
|
|
379
|
+
plugins=(git docker npm node kubectl aws gcloud ...)
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
### Raspberry Pi OS (APT)
|
|
385
|
+
|
|
386
|
+
#### Prerequisites
|
|
387
|
+
|
|
388
|
+
- Raspberry Pi OS (Bookworm, Bullseye, or Buster) - 32-bit or 64-bit
|
|
389
|
+
- Raspberry Pi 2 or later (Raspberry Pi 3B+ or later recommended)
|
|
390
|
+
- sudo privileges
|
|
391
|
+
- Internet connectivity
|
|
392
|
+
|
|
393
|
+
Raspberry Pi OS is based on Debian, so the installation follows the same APT-based process.
|
|
394
|
+
|
|
395
|
+
#### Installation Steps
|
|
396
|
+
|
|
397
|
+
**Step 1: Verify your architecture**
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
uname -m
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
- `aarch64` = 64-bit ARM (Raspberry Pi 3/4/5 with 64-bit OS)
|
|
404
|
+
- `armv7l` = 32-bit ARM (Raspberry Pi 2/3/4 with 32-bit OS)
|
|
405
|
+
- `armv6l` = 32-bit ARM (Raspberry Pi Zero/1)
|
|
406
|
+
|
|
407
|
+
All architectures are supported for Oh My Zsh.
|
|
408
|
+
|
|
409
|
+
**Step 2: Update package lists and install Zsh**
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
413
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
Verify Zsh installation:
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
zsh --version
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
**Step 3: Install curl and git**
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl git
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
**Step 4: Install Oh My Zsh non-interactively**
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**Step 5: Set Zsh as your default shell**
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
sudo chsh -s $(which zsh) $(whoami)
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
**Step 6: Apply the configuration**
|
|
441
|
+
|
|
442
|
+
Log out and log back in, or start Zsh manually:
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
zsh
|
|
446
|
+
source ~/.zshrc
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
#### Verification
|
|
450
|
+
|
|
451
|
+
Confirm Oh My Zsh is installed:
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
ls ~/.oh-my-zsh
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
Verify the ZSH variable is set:
|
|
458
|
+
|
|
459
|
+
```bash
|
|
460
|
+
echo $ZSH
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
Expected output:
|
|
464
|
+
|
|
465
|
+
```
|
|
466
|
+
/home/pi/.oh-my-zsh
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
(Replace `pi` with your username if different.)
|
|
470
|
+
|
|
471
|
+
#### Troubleshooting
|
|
472
|
+
|
|
473
|
+
**Problem**: Installation is very slow
|
|
474
|
+
|
|
475
|
+
**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.
|
|
476
|
+
|
|
477
|
+
**Problem**: Oh My Zsh themes cause slow prompt rendering
|
|
478
|
+
|
|
479
|
+
**Solution**: Some complex themes (like Powerlevel10k) can be slow on older Raspberry Pi models. Use a simpler theme:
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
# Edit ~/.zshrc and change ZSH_THEME
|
|
483
|
+
ZSH_THEME="robbyrussell"
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
**Problem**: Fonts do not display correctly over SSH
|
|
487
|
+
|
|
488
|
+
**Solution**: Terminal fonts are rendered by your local machine, not the Raspberry Pi. Install a Nerd Font on your local machine and configure your SSH client to use it.
|
|
489
|
+
|
|
490
|
+
**Problem**: `git clone` fails during installation
|
|
491
|
+
|
|
492
|
+
**Solution**: Check your internet connection. If using WiFi, consider using Ethernet for more stable connectivity:
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
ping -c 3 github.com
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
---
|
|
499
|
+
|
|
500
|
+
### Amazon Linux/RHEL/Fedora (DNF/YUM)
|
|
501
|
+
|
|
502
|
+
#### Prerequisites
|
|
503
|
+
|
|
504
|
+
- Amazon Linux 2023 (AL2023), Amazon Linux 2 (AL2), RHEL 8+, or Fedora 38+
|
|
505
|
+
- sudo privileges
|
|
506
|
+
- Internet connectivity
|
|
507
|
+
|
|
508
|
+
Amazon Linux 2023 and RHEL 8+ use DNF. Amazon Linux 2 and RHEL 7 use YUM.
|
|
509
|
+
|
|
510
|
+
**Important**: Amazon Linux 2 reaches end of support on June 30, 2026. Consider migrating to Amazon Linux 2023.
|
|
511
|
+
|
|
512
|
+
#### Installation Steps
|
|
513
|
+
|
|
514
|
+
**Step 1: Install Zsh**
|
|
515
|
+
|
|
516
|
+
For Amazon Linux 2023 / RHEL 8+ / Fedora:
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
sudo dnf install -y zsh
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
For Amazon Linux 2 / RHEL 7:
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
sudo yum install -y zsh
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
Verify Zsh installation:
|
|
529
|
+
|
|
530
|
+
```bash
|
|
531
|
+
zsh --version
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
Expected output (version numbers may vary):
|
|
535
|
+
|
|
536
|
+
```
|
|
537
|
+
zsh 5.9 (x86_64-redhat-linux-gnu)
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
**Step 2: Install curl and git**
|
|
541
|
+
|
|
542
|
+
For DNF-based systems:
|
|
543
|
+
|
|
544
|
+
```bash
|
|
545
|
+
sudo dnf install -y curl git
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
For YUM-based systems:
|
|
549
|
+
|
|
550
|
+
```bash
|
|
551
|
+
sudo yum install -y curl git
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
**Step 3: Install Oh My Zsh non-interactively**
|
|
555
|
+
|
|
556
|
+
```bash
|
|
557
|
+
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
**Step 4: Set Zsh as your default shell**
|
|
561
|
+
|
|
562
|
+
For Fedora (recent versions use `lchsh`):
|
|
563
|
+
|
|
564
|
+
```bash
|
|
565
|
+
sudo lchsh $(whoami)
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
When prompted, enter `/usr/bin/zsh`.
|
|
569
|
+
|
|
570
|
+
For Amazon Linux / RHEL:
|
|
571
|
+
|
|
572
|
+
```bash
|
|
573
|
+
sudo chsh -s $(which zsh) $(whoami)
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
**Step 5: Apply the configuration**
|
|
577
|
+
|
|
578
|
+
Log out and log back in, or start Zsh manually:
|
|
579
|
+
|
|
580
|
+
```bash
|
|
581
|
+
zsh
|
|
582
|
+
source ~/.zshrc
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
#### Verification
|
|
586
|
+
|
|
587
|
+
Confirm Oh My Zsh is installed:
|
|
588
|
+
|
|
589
|
+
```bash
|
|
590
|
+
ls ~/.oh-my-zsh
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
Verify the ZSH variable is set:
|
|
594
|
+
|
|
595
|
+
```bash
|
|
596
|
+
echo $ZSH
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
Expected output:
|
|
600
|
+
|
|
601
|
+
```
|
|
602
|
+
/home/ec2-user/.oh-my-zsh
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
(Username varies: `ec2-user` on EC2, `fedora` on Fedora Cloud, or your custom username.)
|
|
606
|
+
|
|
607
|
+
Verify Zsh is your default shell:
|
|
608
|
+
|
|
609
|
+
```bash
|
|
610
|
+
echo $SHELL
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
Expected output:
|
|
614
|
+
|
|
615
|
+
```
|
|
616
|
+
/usr/bin/zsh
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
#### Troubleshooting
|
|
620
|
+
|
|
621
|
+
**Problem**: `lchsh: command not found` on older Fedora
|
|
622
|
+
|
|
623
|
+
**Solution**: Use `chsh` instead:
|
|
624
|
+
|
|
625
|
+
```bash
|
|
626
|
+
sudo chsh -s $(which zsh) $(whoami)
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
**Problem**: `chsh` requires password in automation scripts
|
|
630
|
+
|
|
631
|
+
**Solution**: Modify `/etc/passwd` directly:
|
|
632
|
+
|
|
633
|
+
```bash
|
|
634
|
+
sudo sed -i "s|$(whoami):/bin/bash|$(whoami):$(which zsh)|" /etc/passwd
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
**Problem**: `No match for argument: zsh` on Amazon Linux 2
|
|
638
|
+
|
|
639
|
+
**Solution**: Update the yum cache:
|
|
640
|
+
|
|
641
|
+
```bash
|
|
642
|
+
sudo yum makecache
|
|
643
|
+
sudo yum install -y zsh
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
**Problem**: Oh My Zsh not loaded in new SSH sessions on EC2
|
|
647
|
+
|
|
648
|
+
**Solution**: Ensure `.bashrc` or `.bash_profile` is not overriding the shell. Verify your default shell:
|
|
649
|
+
|
|
650
|
+
```bash
|
|
651
|
+
grep $(whoami) /etc/passwd
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
The last field should be `/usr/bin/zsh` or `/bin/zsh`.
|
|
655
|
+
|
|
656
|
+
---
|
|
657
|
+
|
|
658
|
+
### WSL (Ubuntu)
|
|
659
|
+
|
|
660
|
+
#### Prerequisites
|
|
661
|
+
|
|
662
|
+
- Windows 10 version 2004 or higher, or Windows 11
|
|
663
|
+
- WSL 2 enabled with Ubuntu distribution installed
|
|
664
|
+
- sudo privileges within WSL
|
|
665
|
+
|
|
666
|
+
WSL runs a full Linux environment. The installation follows the Ubuntu/Debian process.
|
|
667
|
+
|
|
668
|
+
#### Installation Steps
|
|
669
|
+
|
|
670
|
+
**Step 1: Update package lists and install Zsh**
|
|
671
|
+
|
|
672
|
+
Open your WSL Ubuntu terminal and run:
|
|
673
|
+
|
|
674
|
+
```bash
|
|
675
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
676
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
Verify Zsh installation:
|
|
680
|
+
|
|
681
|
+
```bash
|
|
682
|
+
zsh --version
|
|
683
|
+
```
|
|
684
|
+
|
|
685
|
+
**Step 2: Install curl and git**
|
|
686
|
+
|
|
687
|
+
```bash
|
|
688
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl git
|
|
689
|
+
```
|
|
690
|
+
|
|
691
|
+
**Step 3: Install Oh My Zsh non-interactively**
|
|
692
|
+
|
|
693
|
+
```bash
|
|
694
|
+
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
|
|
695
|
+
```
|
|
696
|
+
|
|
697
|
+
**Step 4: Set Zsh as your default shell**
|
|
698
|
+
|
|
699
|
+
```bash
|
|
700
|
+
sudo chsh -s $(which zsh) $(whoami)
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
**Step 5: Configure Windows Terminal (optional but recommended)**
|
|
704
|
+
|
|
705
|
+
To have WSL launch Zsh by default in Windows Terminal, you can add this to the end of your `~/.bashrc`:
|
|
706
|
+
|
|
707
|
+
```bash
|
|
708
|
+
# Auto-launch Zsh in WSL
|
|
709
|
+
if [ -t 1 ] && [ -x /usr/bin/zsh ]; then
|
|
710
|
+
exec /usr/bin/zsh
|
|
711
|
+
fi
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
Alternatively, close and reopen WSL. The new default shell should be Zsh.
|
|
715
|
+
|
|
716
|
+
**Step 6: Apply the configuration**
|
|
717
|
+
|
|
718
|
+
```bash
|
|
719
|
+
zsh
|
|
720
|
+
source ~/.zshrc
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
#### Verification
|
|
724
|
+
|
|
725
|
+
Confirm Oh My Zsh is installed:
|
|
726
|
+
|
|
727
|
+
```bash
|
|
728
|
+
ls ~/.oh-my-zsh
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
Verify the ZSH variable is set:
|
|
732
|
+
|
|
733
|
+
```bash
|
|
734
|
+
echo $ZSH
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
Expected output:
|
|
738
|
+
|
|
739
|
+
```
|
|
740
|
+
/home/<your-wsl-username>/.oh-my-zsh
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
Verify Zsh is running:
|
|
744
|
+
|
|
745
|
+
```bash
|
|
746
|
+
echo $0
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
Expected output:
|
|
750
|
+
|
|
751
|
+
```
|
|
752
|
+
zsh
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
#### Troubleshooting
|
|
756
|
+
|
|
757
|
+
**Problem**: `chsh` does not work in WSL
|
|
758
|
+
|
|
759
|
+
**Solution**: WSL may not respect `chsh` changes. Add the auto-launch snippet to `~/.bashrc`:
|
|
760
|
+
|
|
761
|
+
```bash
|
|
762
|
+
cat >> ~/.bashrc << 'EOF'
|
|
763
|
+
|
|
764
|
+
# Auto-launch Zsh in WSL
|
|
765
|
+
if [ -t 1 ] && [ -x /usr/bin/zsh ]; then
|
|
766
|
+
exec /usr/bin/zsh
|
|
767
|
+
fi
|
|
768
|
+
EOF
|
|
769
|
+
```
|
|
770
|
+
|
|
771
|
+
**Problem**: Windows Terminal still shows Bash prompt
|
|
772
|
+
|
|
773
|
+
**Solution**: Close all WSL terminals and restart WSL:
|
|
774
|
+
|
|
775
|
+
```powershell
|
|
776
|
+
# In Windows PowerShell
|
|
777
|
+
wsl --shutdown
|
|
778
|
+
wsl
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
**Problem**: Oh My Zsh themes display incorrectly in Windows Terminal
|
|
782
|
+
|
|
783
|
+
**Solution**: Install a Nerd Font on Windows and configure Windows Terminal to use it:
|
|
784
|
+
|
|
785
|
+
1. Download a Nerd Font from https://www.nerdfonts.com/font-downloads (MesloLGS NF recommended)
|
|
786
|
+
2. Install the font on Windows by double-clicking the .ttf file
|
|
787
|
+
3. Open Windows Terminal settings (Ctrl+,)
|
|
788
|
+
4. Select your Ubuntu profile
|
|
789
|
+
5. Under "Appearance", set "Font face" to your installed Nerd Font
|
|
790
|
+
|
|
791
|
+
**Problem**: Slow startup in WSL
|
|
792
|
+
|
|
793
|
+
**Solution**: Windows Defender scanning can slow WSL. Add exclusions for WSL directories:
|
|
794
|
+
|
|
795
|
+
```powershell
|
|
796
|
+
# Run in Windows PowerShell as Administrator
|
|
797
|
+
Add-MpPreference -ExclusionPath "\\wsl$\Ubuntu"
|
|
798
|
+
Add-MpPreference -ExclusionPath "$env:LOCALAPPDATA\Packages\*Ubuntu*"
|
|
799
|
+
```
|
|
800
|
+
|
|
801
|
+
---
|
|
802
|
+
|
|
803
|
+
### Git Bash (Not Supported)
|
|
804
|
+
|
|
805
|
+
#### Platform Status
|
|
806
|
+
|
|
807
|
+
Oh My Zsh is **not supported** on Git Bash (Windows).
|
|
808
|
+
|
|
809
|
+
Oh My Zsh is a framework specifically designed for the Zsh shell, which is not available on native Windows environments. Git Bash uses a MinGW-based Bash shell and does not support Zsh.
|
|
810
|
+
|
|
811
|
+
#### Recommended Alternatives
|
|
812
|
+
|
|
813
|
+
**Option 1: Use WSL (Windows Subsystem for Linux)**
|
|
814
|
+
|
|
815
|
+
WSL provides a full Linux environment where you can install and use Oh My Zsh. See the WSL installation section above.
|
|
816
|
+
|
|
817
|
+
To install WSL from an Administrator PowerShell:
|
|
818
|
+
|
|
819
|
+
```powershell
|
|
820
|
+
wsl --install
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
After installation and reboot, follow the WSL (Ubuntu) installation steps.
|
|
824
|
+
|
|
825
|
+
**Option 2: Use Oh My Bash**
|
|
826
|
+
|
|
827
|
+
If you prefer to stay in Git Bash, consider [Oh My Bash](https://github.com/ohmybash/oh-my-bash), which provides similar functionality for Bash:
|
|
828
|
+
|
|
829
|
+
```bash
|
|
830
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
**Option 3: Use PowerShell with Oh My Posh**
|
|
834
|
+
|
|
835
|
+
For a modern Windows shell experience, consider [Oh My Posh](https://ohmyposh.dev/) with PowerShell:
|
|
836
|
+
|
|
837
|
+
```powershell
|
|
838
|
+
winget install --id JanDeDobbeleer.OhMyPosh --silent --accept-package-agreements --accept-source-agreements
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
---
|
|
842
|
+
|
|
843
|
+
## Post-Installation Configuration
|
|
844
|
+
|
|
845
|
+
After installing Oh My Zsh on any platform, consider these common configurations.
|
|
846
|
+
|
|
847
|
+
### Changing the Theme
|
|
848
|
+
|
|
849
|
+
Oh My Zsh includes 140+ themes. View available themes:
|
|
850
|
+
|
|
851
|
+
```bash
|
|
852
|
+
ls ~/.oh-my-zsh/themes
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
Change your theme by editing `~/.zshrc`:
|
|
856
|
+
|
|
857
|
+
```bash
|
|
858
|
+
# Edit ~/.zshrc and change ZSH_THEME
|
|
859
|
+
ZSH_THEME="agnoster"
|
|
860
|
+
```
|
|
861
|
+
|
|
862
|
+
Popular themes include:
|
|
863
|
+
- `robbyrussell` (default) - Simple and clean
|
|
864
|
+
- `agnoster` - Informative with git status (requires Powerline font)
|
|
865
|
+
- `avit` - Minimal two-line prompt
|
|
866
|
+
- `bira` - Colorful with user/host info
|
|
867
|
+
|
|
868
|
+
Apply the change:
|
|
869
|
+
|
|
870
|
+
```bash
|
|
871
|
+
source ~/.zshrc
|
|
872
|
+
```
|
|
873
|
+
|
|
874
|
+
### Enabling Plugins
|
|
875
|
+
|
|
876
|
+
Oh My Zsh includes 300+ plugins. View available plugins:
|
|
877
|
+
|
|
878
|
+
```bash
|
|
879
|
+
ls ~/.oh-my-zsh/plugins
|
|
880
|
+
```
|
|
881
|
+
|
|
882
|
+
Enable plugins by editing the `plugins` line in `~/.zshrc`:
|
|
883
|
+
|
|
884
|
+
```bash
|
|
885
|
+
plugins=(git docker npm node kubectl aws)
|
|
886
|
+
```
|
|
887
|
+
|
|
888
|
+
Commonly used plugins:
|
|
889
|
+
- `git` - Git aliases and functions (enabled by default)
|
|
890
|
+
- `docker` - Docker command completion
|
|
891
|
+
- `npm` / `yarn` - Node.js package manager completions
|
|
892
|
+
- `kubectl` - Kubernetes command completion
|
|
893
|
+
- `aws` - AWS CLI completions
|
|
894
|
+
- `z` - Directory jumping based on frecency
|
|
895
|
+
- `history` - History search shortcuts
|
|
896
|
+
|
|
897
|
+
Apply the change:
|
|
898
|
+
|
|
899
|
+
```bash
|
|
900
|
+
source ~/.zshrc
|
|
901
|
+
```
|
|
902
|
+
|
|
903
|
+
### Installing Custom Plugins
|
|
904
|
+
|
|
905
|
+
Install third-party plugins to the custom plugins directory:
|
|
906
|
+
|
|
907
|
+
**zsh-autosuggestions** (suggests commands as you type):
|
|
908
|
+
|
|
909
|
+
```bash
|
|
910
|
+
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
|
|
911
|
+
```
|
|
912
|
+
|
|
913
|
+
**zsh-syntax-highlighting** (highlights valid commands in green):
|
|
914
|
+
|
|
915
|
+
```bash
|
|
916
|
+
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
Then add them to your plugins list in `~/.zshrc`:
|
|
920
|
+
|
|
921
|
+
```bash
|
|
922
|
+
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
### Updating Oh My Zsh
|
|
926
|
+
|
|
927
|
+
Oh My Zsh can update itself. Run:
|
|
928
|
+
|
|
929
|
+
```bash
|
|
930
|
+
omz update
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
Or for unattended updates, call the upgrade script directly:
|
|
934
|
+
|
|
935
|
+
```bash
|
|
936
|
+
$ZSH/tools/upgrade.sh
|
|
937
|
+
```
|
|
938
|
+
|
|
939
|
+
To enable automatic updates, ensure this line is in your `~/.zshrc`:
|
|
940
|
+
|
|
941
|
+
```bash
|
|
942
|
+
zstyle ':omz:update' mode auto
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
### Uninstalling Oh My Zsh
|
|
946
|
+
|
|
947
|
+
To completely remove Oh My Zsh:
|
|
948
|
+
|
|
949
|
+
```bash
|
|
950
|
+
uninstall_oh_my_zsh
|
|
951
|
+
```
|
|
952
|
+
|
|
953
|
+
This will:
|
|
954
|
+
- Remove the `~/.oh-my-zsh` directory
|
|
955
|
+
- Restore your original `~/.zshrc` from the backup
|
|
956
|
+
|
|
957
|
+
---
|
|
958
|
+
|
|
959
|
+
## Common Issues
|
|
960
|
+
|
|
961
|
+
### Issue: "zsh: command not found" for Various Commands
|
|
962
|
+
|
|
963
|
+
**Symptoms**: Commands that work in Bash do not work in Zsh.
|
|
964
|
+
|
|
965
|
+
**Solution**: Your PATH may not be configured correctly. Ensure your PATH includes standard directories:
|
|
966
|
+
|
|
967
|
+
```bash
|
|
968
|
+
export PATH="$HOME/bin:/usr/local/bin:$PATH"
|
|
969
|
+
```
|
|
970
|
+
|
|
971
|
+
Add this line to the top of your `~/.zshrc` if missing.
|
|
972
|
+
|
|
973
|
+
### Issue: "compinit: insecure directories" Warning
|
|
974
|
+
|
|
975
|
+
**Symptoms**: Warning message about insecure directories on shell startup.
|
|
976
|
+
|
|
977
|
+
**Solution**: Fix directory permissions:
|
|
978
|
+
|
|
979
|
+
```bash
|
|
980
|
+
compaudit | xargs chmod g-w,o-w
|
|
981
|
+
```
|
|
982
|
+
|
|
983
|
+
Or suppress the warning by adding this before `source $ZSH/oh-my-zsh.sh` in `~/.zshrc`:
|
|
984
|
+
|
|
985
|
+
```bash
|
|
986
|
+
ZSH_DISABLE_COMPFIX=true
|
|
987
|
+
```
|
|
988
|
+
|
|
989
|
+
### Issue: Slow Shell Startup
|
|
990
|
+
|
|
991
|
+
**Symptoms**: New terminal windows take several seconds to load.
|
|
992
|
+
|
|
993
|
+
**Solutions**:
|
|
994
|
+
|
|
995
|
+
1. **Reduce plugins**: Disable unused plugins in `~/.zshrc`
|
|
996
|
+
|
|
997
|
+
2. **Use a simpler theme**: Complex themes like Powerlevel10k with extensive git status checks can be slow
|
|
998
|
+
|
|
999
|
+
3. **Profile startup time**:
|
|
1000
|
+
|
|
1001
|
+
```bash
|
|
1002
|
+
time zsh -i -c exit
|
|
1003
|
+
```
|
|
1004
|
+
|
|
1005
|
+
4. **Lazy-load NVM and similar tools**: See the NVM documentation for lazy-loading configuration
|
|
1006
|
+
|
|
1007
|
+
### Issue: Oh My Zsh Not Loading in SSH Sessions
|
|
1008
|
+
|
|
1009
|
+
**Symptoms**: SSH sessions start with plain Zsh, not Oh My Zsh.
|
|
1010
|
+
|
|
1011
|
+
**Solution**: Ensure your default shell is set correctly:
|
|
1012
|
+
|
|
1013
|
+
```bash
|
|
1014
|
+
grep $(whoami) /etc/passwd
|
|
1015
|
+
```
|
|
1016
|
+
|
|
1017
|
+
The line should end with `/bin/zsh` or `/usr/bin/zsh`.
|
|
1018
|
+
|
|
1019
|
+
Also verify `~/.zshrc` is being sourced. For non-login shells, create `~/.zshenv` with:
|
|
1020
|
+
|
|
1021
|
+
```bash
|
|
1022
|
+
source ~/.zshrc
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
### Issue: Themes Display Broken Characters
|
|
1026
|
+
|
|
1027
|
+
**Symptoms**: Prompt shows boxes, question marks, or garbled characters.
|
|
1028
|
+
|
|
1029
|
+
**Solution**: Install a Nerd Font or Powerline-compatible font:
|
|
1030
|
+
|
|
1031
|
+
**On macOS:**
|
|
1032
|
+
|
|
1033
|
+
```bash
|
|
1034
|
+
brew tap homebrew/cask-fonts
|
|
1035
|
+
brew install --cask font-meslo-lg-nerd-font
|
|
1036
|
+
```
|
|
1037
|
+
|
|
1038
|
+
**On Linux:**
|
|
1039
|
+
|
|
1040
|
+
```bash
|
|
1041
|
+
mkdir -p ~/.local/share/fonts
|
|
1042
|
+
cd ~/.local/share/fonts
|
|
1043
|
+
curl -fLo "MesloLGS NF Regular.ttf" https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
|
|
1044
|
+
fc-cache -fv
|
|
1045
|
+
```
|
|
1046
|
+
|
|
1047
|
+
Then configure your terminal emulator to use the installed font.
|
|
1048
|
+
|
|
1049
|
+
### Issue: Git Plugin Shows Wrong Branch or Status
|
|
1050
|
+
|
|
1051
|
+
**Symptoms**: Git information in prompt is incorrect or outdated.
|
|
1052
|
+
|
|
1053
|
+
**Solution**: The git plugin caches information for performance. Force a refresh:
|
|
1054
|
+
|
|
1055
|
+
```bash
|
|
1056
|
+
source ~/.zshrc
|
|
1057
|
+
```
|
|
1058
|
+
|
|
1059
|
+
Or check if you are in a git repository:
|
|
1060
|
+
|
|
1061
|
+
```bash
|
|
1062
|
+
git rev-parse --is-inside-work-tree
|
|
1063
|
+
```
|
|
1064
|
+
|
|
1065
|
+
### Issue: Arrow Keys Not Working in Terminal
|
|
1066
|
+
|
|
1067
|
+
**Symptoms**: Arrow keys print escape sequences instead of navigating.
|
|
1068
|
+
|
|
1069
|
+
**Solution**: Your terminal may not be set up correctly. Add to `~/.zshrc`:
|
|
1070
|
+
|
|
1071
|
+
```bash
|
|
1072
|
+
bindkey -e # Use Emacs key bindings
|
|
1073
|
+
# Or for vi mode:
|
|
1074
|
+
# bindkey -v
|
|
1075
|
+
```
|
|
1076
|
+
|
|
1077
|
+
---
|
|
1078
|
+
|
|
1079
|
+
## References
|
|
1080
|
+
|
|
1081
|
+
- [Oh My Zsh Official Website](https://ohmyz.sh/)
|
|
1082
|
+
- [Oh My Zsh GitHub Repository](https://github.com/ohmyzsh/ohmyzsh)
|
|
1083
|
+
- [Oh My Zsh Wiki - Installing ZSH](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH)
|
|
1084
|
+
- [Oh My Zsh Wiki - Plugins](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins)
|
|
1085
|
+
- [Oh My Zsh Wiki - Themes](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
|
|
1086
|
+
- [Zsh Official Website](https://www.zsh.org/)
|
|
1087
|
+
- [Zsh Documentation](https://zsh.sourceforge.io/Doc/)
|
|
1088
|
+
- [Homebrew Zsh Formula](https://formulae.brew.sh/formula/zsh)
|
|
1089
|
+
- [Nerd Fonts](https://www.nerdfonts.com/)
|
|
1090
|
+
- [zsh-autosuggestions Plugin](https://github.com/zsh-users/zsh-autosuggestions)
|
|
1091
|
+
- [zsh-syntax-highlighting Plugin](https://github.com/zsh-users/zsh-syntax-highlighting)
|
|
1092
|
+
- [Powerlevel10k Theme](https://github.com/romkatv/powerlevel10k)
|
|
1093
|
+
- [Oh My Bash (Alternative for Bash)](https://github.com/ohmybash/oh-my-bash)
|
|
1094
|
+
- [Oh My Posh (Alternative for PowerShell)](https://ohmyposh.dev/)
|