pathmaster 0.3.0

pathmaster is a powerful command-line tool written in Rust for managing your system's PATH environment variable.
# 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:

| Shell    | Configuration File                | Detection Method       |
|----------|----------------------------------|------------------------|
| 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