diff options
Diffstat (limited to 'linux/bash.html')
-rw-r--r-- | linux/bash.html | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/linux/bash.html b/linux/bash.html new file mode 100644 index 0000000..f49d27e --- /dev/null +++ b/linux/bash.html @@ -0,0 +1,165 @@ +<!DOCTYPE html> +<html dir="ltr" lang="en"> + <head> + <meta charset='utf-8'> + <title>2.5.2. Bash</title> + </head> + <body> + <a href="index.html">Core OS Index</a> + + <h1 id="bash">2.5.2. Bash</h1> + + <p>Just to be sure, setup bash as default login;<p> + + <pre> + $ chsh + </pre> + + <p>Description of configuration files;</p> + + <dl> + <dt>~/.bash_profile</dt> + <dd>Minimal file that just load .profile and then .bashrc, + in this order.</dd> + + <dt>~/.profile<dt> + <dd>Not specifically related to bash, such as + environment variables (PATH). Only for login shells (sh) + or graphical applications.</dd> + + <dt>~/.bashrc</dt> + <dd>Related to interactive command line, such as bash + alias, editor.</dd> + </dl> + + <h2 id="profile">2.5.2.1. Profile</h2> + + <p>Example of ~/.profile;</p> + + <pre> + export GPG_AGENT_INFO # the env file does not contain the export statement + export SSH_AUTH_SOCK # enable gpg-agent for ssh + + export GPGKEY=XXXXXXXX + + # ssh-agent to ask only ounce for password + SSH_ENV="$HOME/.ssh/environment" + function start_agent { + echo "Initialising new SSH agent..." + /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}" + echo succeeded + chmod 600 "${SSH_ENV}" + . "${SSH_ENV}" > /dev/null + /usr/bin/ssh-add; + } + + # Source SSH settings, if applicable + if [ -f "${SSH_ENV}" ]; then + . "${SSH_ENV}" > /dev/null + #ps ${SSH_AGENT_PID} doesn't work under cywgin + ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || { + start_agent; + } + else + start_agent; + fi + + # Weston + if test -z "${XDG_RUNTIME_DIR}"; then + export XDG_RUNTIME_DIR=/tmp/${UID}-runtime-dir + if ! test -d "${XDG_RUNTIME_DIR}"; then + mkdir "${XDG_RUNTIME_DIR}" + chmod 0700 "${XDG_RUNTIME_DIR}" + fi +fi </pre> + + <h2 id="bashrc">2.5.2.2. Bash RC</h2> + + <p>Example of ~/.bashrc;</p> + + <pre> + # If not running interactively, don't do anything + case $- in + *i*) ;; + *) return;; + esac + + + # check the window size after each command and, if necessary, + # update the values of LINES and COLUMNS. + shopt -s checkwinsize + + + # don't put duplicate lines or lines starting with space in the history. + # See bash(1) for more options + HISTCONTROL=ignoreboth + + # append to the history file, don't overwrite it + shopt -s histappend + + # for setting history length see HISTSIZE and HISTFILESIZE in bash(1) + HISTSIZE=1000 + HISTFILESIZE=2000 + + alias tmux="tmux -2" + + alias rm='rm -i' + #alias cp='cp -i' + alias mv='mv -i' + # Prevents accidentally clobbering files. + alias mkdir='mkdir -p' + + alias h='history' + alias j='jobs -l' + alias which='type -a' + alias ..='cd ..' + + # Generate a password + genpasswd () { + local l=$1 + [ "$l" == "" ] && l=20 + tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs + } + + # Git graph log + glog () { + git log --graph --abbrev-commit --decorate --date=relative --all + } + + if [[ -z "$TMUX" ]] ;then + ID="`tmux ls | grep -vm1 attached | cut -d: -f1`" # get the id of a deattached session + if [[ -z "$ID" ]] ;then # if not available create a new one + tmux new-session + else + tmux attach-session -t "$ID" # if available attach to it + fi + fi + </pre> + + <h2 id="bash_profile">2.5.2.3. Bash profile</h2> + + <p>Example of ~/.bash_profile;</p> + + <pre> + #!/bin/bash + if [ -f ~/.profile ]; then + source ~/.profile + fi + + if [ -f ~/.bashrc ]; then + source ~/.bashrc + fi + </pre> + + + <a href="index.html">Core OS Index</a> + <p> + This is part of the Tribu System Documentation. + Copyright (C) 2020 + Tribu Team. + See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a> + for copying conditions.</p> + + + </body> +</html> |