This is an experimental shell, partly inspired by this blog post about a much more ambitious shell. Being experimental, this is not suitable for day to day use.
Features:
- Aliases, accessed and created by the
alias
command. - History and hints, provided by rustyline, accessed by pressing up at the command line (for history) and pressing right (for accepting hints)
- Cross-shell environment variable access, provided by the
diffenv
andcopyenv
commands. - Cross-shell status information, provided by the
pshl
command. - Remotely setting environment variables for the parent shell of other scripts and programs using the
setenv
utility (which allows me to avoid creating a scripting language - you can just write your pshrc in bash and callsetenv
to set variables in the parent environment)
Here's an example of these being used together: You've got a long-running process you don't want to kill, but it would be a pain to recreate parts of that environment to run another process. Or maybe you've had a process running for a long time and can't remember exactly how you configured its environment.