Dependencies are optional. They are loaded if found.
- bat: https://github.com/sharkdp/bat
- fzf: https://github.com/junegunn/fzf
- fd: https://github.com/sharkdp/fd
- virtualenv
Edit the shell initialization files accordingly.
Create new or replace contents
subl ~/.profile
## -----------------------------------------------
## mpavezb dotfiles
if [ -f "$HOME/.dotfiles/bash/init/profile.sh" ]; then
. "$HOME/.dotfiles/bash/init/profile.sh"
fi
## -----------------------------------------------Create new or replace contents
subl ~/.bash_profile
## -----------------------------------------------
## mpavezb dotfiles
## Let ~/.profile handle the initialization.
[[ -f "$HOME/.profile" ]] && source "$HOME/.profile"
## -----------------------------------------------Append
subl ~/.bash_logout
## -----------------------------------------------
## mpavezb dotfiles
if [ -f "$HOME/.dotfiles/bash/init/bash_logout.bash" ]; then
source "$HOME/.dotfiles/bash/init/bash_logout.bash"
fi
## -----------------------------------------------Append
subl ~/.bashrc
## -----------------------------------------------
## mpavezb dotfiles
if [ -f "$HOME/.dotfiles/bash/bashrc.bash" ]; then
source "$HOME/.dotfiles/bash/bashrc.bash"
fi
## -----------------------------------------------This enables the following:
- Local paths
- Shell options: history, globs, autocompletion.
- EDITOR: emacsclient.
- Prompt
- Aliases
- FZF
- BAT
An interactive shell reads commands from user input on a tty. Among other things, such a shell reads startup files on activation, displays a prompt, and enables job control by default. The user can interact with the shell.
A shell running a script is always a non-interactive shell. All the same, the script can still access its tty. It is even possible to emulate an interactive shell in a script.
Source: https://www.tldp.org/LDP/abs/html/intandnonint.html
A login shell is the first process that executes under your user ID when you log in for an interactive session. The login process tells the shell to behave as a login shell.
- interactive, login shell: When you log in on a text console, or through SSH, or with su -.
- interactive, non-login shell (subshell): When you start a shell in a terminal in an existing session (screen, X terminal, Emacs terminal buffer, a shell inside another, etc.).
- non-interactive, non-login shell (script): When a shell runs a script or a command passed on its command line.
- When you log in in graphical mode (on an X display manager), you don't get a login shell, instead you get a session manager or a window manager.
Source: https://unix.stackexchange.com/a/46856/49064
Depending on the shell type, they read the following files in order:
- interactive, login shell:
/etc/profile-> [~/.bash_profile||~/.bash_login||~/.profile] (only the first of the ones found) ->~/.bash_logout. - interactive, non-login shell:
/etc/bash.bashrc->~/.bashrc. - non-interactive, non-login shell:
$BASH_ENV.
Sources:
- https://shreevatsa.wordpress.com/2008/03/30/zshbash-startup-files-loading-order-bashrc-zshrc-etc/
- https://blog.flowblok.id.au/2013-02/shell-startup-scripts.html
Notes:
~/.bashrcand~/.bash_proflefiles arebashspecific.- It is common to source
~/.bashrcon~/.*profilefiles. ~/.profilemust be/bin/sh.
See the README file.
This prompt shows git information whenever available.
Some delay issues have been found when using in large repositories. The table below shows elapsed time used to generate the prompt for the Rust repository.
The time is measured using the time BASH command.
| Version | Time | Description |
|---|---|---|
| 0.0 | 0m0,012s | No git prompt. |
| 1.0 | 0m2,259s | First implementation (bash). |
| 1.1 | 0m0,800s | Add --ignore-submodules to git status calls. |
| 1.2 | 0m0,440s | Add --ignore-submodules to git diff calls. |