# Shell Configuration
Pathmaster interacts with your shell configuration files to make PATH changes persistent across sessions. This page details how pathmaster works with different shell environments.
## Supported Shells
Pathmaster automatically detects and supports the following shells:
| Bash | `~/.bashrc` | `$SHELL` contains "bash"|
| Zsh | `~/.zshrc` | `$SHELL` contains "zsh" |
| Fish | `~/.config/fish/config.fish` | `$SHELL` contains "fish"|
| Tcsh/Csh | `~/.tcshrc` | `$SHELL` contains "tcsh" or "csh"|
| Ksh | `~/.kshrc` | `$SHELL` contains "ksh" |
If your shell isn't detected, a generic handler is used as a fallback.
## How Shell Detection Works
When you run pathmaster, it:
1. Reads the `$SHELL` environment variable
2. Extracts the shell name by checking for keywords in the path
3. Selects the appropriate handler for your shell type
4. Locates your shell's configuration file
## Modification Approach
When modifying your PATH, pathmaster:
1. Creates a backup of your shell configuration file (with `.bak` extension and timestamp)
2. Scans for existing PATH-related statements in your configuration
3. Removes any pathmaster-managed PATH entries
4. Adds standardized statements with all required paths
5. Adds a timestamp comment to indicate when changes were made
## Shell-Specific Implementations
### Bash
```bash
# Added by pathmaster on 2025-04-02 15:04:32
export PATH="/usr/local/bin:/usr/bin:/bin:/home/user/bin"
```
### Zsh
```bash
# Added by pathmaster on 2025-04-02 15:04:32
path=(/usr/local/bin /usr/bin /bin /home/user/bin) && export PATH
```
### Fish
```fish
# Added by pathmaster on 2025-04-02 15:04:32
set -e PATH
fish_add_path /usr/local/bin
fish_add_path /usr/bin
fish_add_path /bin
fish_add_path /home/user/bin
```
### Tcsh
```tcsh
# Added by pathmaster on 2025-04-02 15:04:32
setenv PATH /usr/local/bin:/usr/bin:/bin:/home/user/bin
```
### Ksh
```bash
# Added by pathmaster on 2025-04-02 15:04:32
export PATH=/usr/local/bin:/usr/bin:/bin:/home/user/bin
```
## Best Practices
1. **Let pathmaster manage your PATH**: Avoid manually editing pathmaster-managed PATH statements
2. **Check after changes**: Use `pathmaster list` to verify your PATH looks correct
3. **Use restore if needed**: If shell configuration gets corrupted, use `pathmaster restore` to revert changes
4. **Keep configuration simple**: Avoid complex PATH manipulations that might conflict with pathmaster
## Troubleshooting
- If changes aren't persisting, ensure your shell is loading the configuration file pathmaster modifies
- If you get "Permission denied" errors, check file permissions on your shell configuration
- If you use multiple shell profiles, pathmaster only modifies the main configuration file
- For custom shells or configurations, you may need to manually update your PATH