.local.bashrc files that are sourced in a clean bash process when entering
the directory.
Replaces the projector project.
- Makes a simple to define env variables, aliases and functions for a specific project directory.
- Creates a bash history that is a separate from the root bash history.
- Makes it easier to keep and find commands that are related to that project.
- Doesn't fill up the root bash history.
- Does not inherit env variables of other
.local.bashrcdirectories when jumping directories. - Comes with an
lcdalias to quickly jump to.local.bashrcdirectory
A quick setup script.
curl 'https://raw.githubusercontent.com/bas080/dotlocaldotbashrc/master/dotlocaldotbashrc' > "$HOME/.dotlocaldotbashrc" &&
echo 'source "$HOME/.dotlocaldotbashrc"' >> ~/.bashrcAfter re-sourcing your .bashrc you can create a .local.bashrc in a directory where you would like
a local bashrc by running dotlocaldotbashrc init.
Optionally you can show which local bashrc is currently active in your prompt.
# What I use:
PS1="${BASHRC_HOME#$HOME/}:\W "
# Looks like this:
projects/dotlocaldotbashrc:dotlocaldotbashrc cd ../█When using in repositores consider adding .local.* to your .gitignore.
Quick start:
dotlocaldotbashrc [<subcommand>]
Create and configure directory specific bash sessions.
Will source .local.bashrc when no subcommand is defined.
[subcommand]
init - Create a .local.bashrc in current directory.
edit - Opens the bashrc in $EDITOR and re-sources on exit.
More information:
$ cd projects/bashrc/
dotlocaldotbashrc: open /home/user/projects/bashrc
$ cd nested/
dotlocaldotbashrc: exit /home/user/projects/bashrc
dotlocaldotbashrc: open /home/user/projects/bashrc/nested
$ cd
dotlocaldotbashrc: exit /home/user/projects/bashrc/nested
$
Notice that navigating to the home directory resulted in only a bashrc bash session being exited. We just use the initial bash process that was started when bashrc and the rest of the interactive shell was bootstrapped.
You can source the local .local.bashrc at anytime with dotlocaldotbashrc function.
$ dotlocaldotbashrc
bashrc: source '/home/user/.local.bashrc'
$You can quickly edit and automatically source after editor quit with
dotlocaldotbashrc edit.
One notable feature of dotlocaldotbashrc is its behavior when background jobs
are active. When attempting to exit the dotlocaldotbashrc session using the
cd command or when explicitly running the dotlocaldotbashrc command with the
exit option, the script checks for any background jobs in the current session.
If there are background jobs running, the script will display an error message and refrain from exiting the session. This behavior ensures that you don't unintentionally lose work by exiting a session with active background jobs.
$ cd projects/myproject/
dotlocaldotbashrc: open /home/user/projects/myproject
# Start a background job
$ sleep 300 & # ctrl-z
[1] 12345
# Attempt to exit the dotlocaldotbashrc session
$ cd ..
dotlocaldotbashrc: error: will not exit with jobs in the background.How to run the tests:
SPAT_SHELL='bash' spat ./dotlocaldotbashrc.tUses spat to run expect tests.
GPLv3