skal
Manage separate shell configurations with ease.
:sweden: skal :gb: shell
Installation
npm install --global skal
Run skal
in your terminal to initialize, follow the instructions.
Usage
Create and manage profiles under $HOME/.skal/profiles
, use skal
to switch between them.
$ skal --help Manage separate shell configurations with ease. Usage $ skal [<command>] Commands new Create a new profile list List available profiles which Print path to active profile edit Edit profile or configuration Run without arguments
Configuration
Configure by editing the $HOME/.skal/config.json
file.
editor
Used as a convenience together with the edit
command. Opens configuration or profiles in your editor of choice.
Put the command name you use in your terminal to open your preferred editor.
Example:
Format:
;
hooks
Hooks allows you to optionally run commands in response to switching from/to certain profiles.
Example:
Format:
Keep in mind that hooks are run in a child process.
Gotchas
Re-sourcing after profile switch
After running skal
and switching the active profile, the currently active shell needs to be reloaded. The easiest way to do this is to open up a new terminal window or running something equivalent to source "\$HOME/.skal/active"
again.
One way to get around this would be to create a local function re-sourcing after skal
has finished.
Zsh
# ~/.zshrc source "$HOME/.skal/active" function skal() { command skal "$@" if (( $# == 0 )) then source "$HOME/.skal/active" fi}
Fish
# ~/.config/fish/config.fish source "$HOME/.skal/active" function skal command skal $argv if test (count $argv) = 0 source "$HOME/.skal/active" endend
Hooks run in a Node child_process
Node's child_process
module is used to execute hooks. This means that they run in a child process, separate from your currently running shell. Doing something like source "$HOME/.skal/active
inside a hook won't be applied to your terminal shell.