Run Bash commands and replay environment changes (variables, aliases, directory) in Fish shell without restarting your session.
Replay.fish is a Fish shell plugin that allows you to run Bash commands and automatically replay their environment changes—such as exported variables, aliases, and directory switches—in your current Fish session. It solves the problem of needing to restart your shell with `exec` to apply Bash modifications, which can disrupt your workflow by losing session state, history, and background jobs.
Fish shell users who occasionally need to run Bash scripts or commands that modify the environment, such as developers using tools like nvm, setting project-specific variables, or managing shell aliases across different shell environments.
Developers choose Replay.fish because it provides a seamless way to integrate Bash commands into Fish without the drawbacks of restarting the shell, preserving session integrity and improving productivity by eliminating context-switching overhead.
Run Bash commands, replay changes in Fish 🍤
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Captures exported variables, aliases, and directory changes from Bash commands and applies them directly in Fish, as demonstrated in the README with examples like 'export PYTHON=python2' and 'alias g=git'.
Avoids the need for 'exec' which restarts the shell, preserving session history, local variables, and background jobs, as highlighted in the README's caveats about losing state with traditional methods.
Can be installed quickly with Fisher, a popular Fish plugin manager, making setup straightforward with a single command like 'fisher install jorgebucaran/replay.fish'.
Specifically designed for common interoperability tasks, such as using nvm to manage Node.js versions or setting project-specific environment variables without disrupting the Fish workflow.
The README explicitly states that interactive utilities like ssh-add are not supported, restricting its use for commands that require real-time user interaction or complex input handling.
Only captures a subset of Bash side effects (exported variables, aliases, $PWD), missing others like unexported variables, shell options, or process substitutions, which may limit effectiveness for advanced scripts.
Relies on Bash being available and properly configured, adding an external dependency that can introduce performance overhead and potential compatibility issues in minimal or custom environments.