aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/aliases79
-rw-r--r--shell/ash23
-rw-r--r--shell/bash26
-rwxr-xr-xshell/build.sh28
-rw-r--r--shell/colors38
-rw-r--r--shell/conf65
-rw-r--r--shell/ksh79
-rw-r--r--shell/misc34
-rw-r--r--shell/notice13
-rw-r--r--shell/update117
-rw-r--r--shell/utils120
11 files changed, 622 insertions, 0 deletions
diff --git a/shell/aliases b/shell/aliases
new file mode 100644
index 0000000..a734227
--- /dev/null
+++ b/shell/aliases
@@ -0,0 +1,79 @@
+setaliases() {
+ alias ls="ls -F";
+ alias lt="ls -tF";
+ alias ll="ls -lhF";
+ alias llt="ls -tlhF";
+ alias g="grep";
+ alias m="more";
+ alias j="jobs";
+ alias p="pwd";
+ alias c="column"
+ alias ct="column -t"
+ alias eg='grep -E'
+ alias egv='grep -Ev'
+ alias search='grep -niRIE'
+ alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'"
+ alias setxkbmap-list="man xkeyboard-config"
+ alias showsshhosts="cat ~/.ssh/config ~/.ssh/inc/* | awk '/^[hH]ost /{print \$2}'"
+ # docker-getip $container_id
+ alias docker-getip="docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'"
+ alias xa='xargs -I{}'
+ alias gdb='gdb -q'
+ alias bc='bc -q'
+ alias python='/usr/bin/env python3 -q'
+ # Fun fact, Gnucash doesn't play nice when built against musl as a libc...
+ # go figure
+ alias gnucash_locale_fix='export LC_ALL=C; unset LANGUAGE; gnucash'
+
+ if [ "$(uname)" = "Linux" ] ; then
+ # Sets capslock to be another control key, only works with PS2 keyboards
+ alias unfuck_capslock='setkeycodes 3a 29'
+ fi
+}
+
+setcoloraliases() {
+ if [ `uname` = "Linux" ] ; then
+ alias ls="ls --color=auto -F";
+ alias lm='ls -lh --color=force | more';
+ elif [ `uname` = "FreeBSD" ] ; then
+ alias ls="ls -FG";
+ alias lm='CLICOLOR_FORCE="1" ls -l | less -r';
+ fi
+
+ grep --help | grep fucks - >/dev/null 2>&1
+ if [ $? -eq 0 ] ; then
+ alias grep="grep --color=auto";
+ alias egrep='egrep --color=auto'
+ alias search='egrep --color=auto -rnI';
+ fi
+
+ alias diff="$(which diff colordiff 2>/dev/null | tail -n 1)";
+ alias t='tree -CdL'
+}
+
+setsudoaliases() {
+ # Prefer doas if available, as it's likely to be configured by me over sudo
+ _sudo="$(which doas sudo 2>/dev/null | sed 1q)"
+ if [ -x "$_sudo" ] ; then
+ # Package managers
+ # Isn't it amazing how many distros you end up using?
+ alias apt-get="$_sudo apt-get"
+ alias apt="$_sudo apt"
+ alias apt-file="$_sudo apt-file"
+ alias yum="$_sudo yum"
+ alias dnf="$_sudo dnf"
+ alias pacman="$_sudo pacman"
+ alias xbps-install="$_sudo xbps-install"
+ alias xbps-remove="$_sudo xbps-remove"
+ alias pkg="$_sudo pkg"
+ alias pkg_add="$_sudo pkg_add"
+
+ # Filesystem utilities
+ alias zfs="$_sudo zfs"
+ alias zpool="$_sudo zpool"
+ alias btrfs="$_sudo btrfs"
+ alias mount="$_sudo mount"
+ alias umount="$_sudo umount"
+ fi
+}
+
diff --git a/shell/ash b/shell/ash
new file mode 100644
index 0000000..638c58a
--- /dev/null
+++ b/shell/ash
@@ -0,0 +1,23 @@
+
+set_pager
+set_editor
+setaliases
+
+set_ash_title() {
+ _load="Load Avg: $(_sys_load)"
+ _free_mem="M Free: $(free -m | sed -n 2p | awk '{print $3}')"
+ _uptime="Uptime: $(_sys_uptime)"
+ set_title "$(id -un)[$(hostname)] -- $_load $_free_mem $_uptime"
+}
+
+function nonzero_return() {
+ RETVAL=$?
+ [ $RETVAL -ne 0 ] && echo "$RETVAL:"
+}
+
+export PS1="\[\`set_ash_title\`\]\`nonzero_return\`[\t] <\u@\H> \w \\$ "
+
+# Same thing but red user/host combo
+if [ $(id -u) -eq 0 ] ; then
+ export PS1="\[\`set_ash_title\`\]\`nonzero_return\`[\t] <\[\e[31m\]\u\[\e[m\]\[\e[31m\]@\[\e[m\]\[\e[31m\]\H\[\e[m\]> \w \\$ "
+fi
diff --git a/shell/bash b/shell/bash
new file mode 100644
index 0000000..1106665
--- /dev/null
+++ b/shell/bash
@@ -0,0 +1,26 @@
+
+colormanpages
+setcolorterminal
+setcoloraliases
+setlscolors
+set_pager
+set_editor
+setaliases
+setsudoaliases
+
+export PROMPT_COMMAND="set_my_title"
+export MANWIDTH=80
+
+# checkSSHAgent
+
+function nonzero_return() {
+ RETVAL=$?
+ [ $RETVAL -ne 0 ] && echo "$RETVAL:"
+}
+
+export PS1="\`nonzero_return\`[\t] <\u@\H> \w \\$ "
+
+# Same thing but red user/host combo
+if [ $(id -u) -eq 0 ] ; then
+ export PS1="\`nonzero_return\`[\t] <\[\e[31m\]\u\[\e[m\]\[\e[31m\]@\[\e[m\]\[\e[31m\]\H\[\e[m\]> \w \\$ "
+fi
diff --git a/shell/build.sh b/shell/build.sh
new file mode 100755
index 0000000..85b648c
--- /dev/null
+++ b/shell/build.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+cat \
+ notice \
+ ksh \
+ aliases \
+ utils \
+ colors \
+ misc \
+ update \
+ conf \
+ > ../mkshrc
+
+cat \
+ notice \
+ aliases \
+ utils \
+ colors \
+ bash \
+ > ../bashrc
+
+cat \
+ notice \
+ aliases \
+ utils \
+ colors \
+ ash \
+ > ../ashrc
diff --git a/shell/colors b/shell/colors
new file mode 100644
index 0000000..489179f
--- /dev/null
+++ b/shell/colors
@@ -0,0 +1,38 @@
+
+setcolorterminal() {
+ case $TERM in
+ xterm-kitty)
+ # Prevent xterm-kitty from being turned into xterm-256color
+ return;
+ ;;
+ xterm*)
+ export TERM=xterm-256color
+ # printf $'\033]0;'"$(hostname)"$'\007';
+ ;;
+ screen*)
+ export TERM=screen-256color
+ # printf $'\033k'"$(whoami)"$'\033\\';
+ ;;
+ esac
+}
+
+setlscolors() {
+ if [ "$(uname)" = "Linux" ] ; then
+ export LS_COLORS='di=36;40:ln=1;31;40:so=32;40:pi=33;40:ex=1;32;40:bd=34;46:cd=34;43:su=0;41:sg=0;46:tw=0;42:ow=0;43:'
+ elif [ "$(uname)" = "FreeBSD" ] ; then
+ export LSCOLORS='gxBxcxdxCxegedabagacad'
+ fi
+}
+
+colormanpages() {
+ export LESS_TERMCAP_mb=""
+ export LESS_TERMCAP_md=""
+ export LESS_TERMCAP_me=""
+ export LESS_TERMCAP_se=""
+ export LESS_TERMCAP_so=""
+ export LESS_TERMCAP_ue=""
+ export LESS_TERMCAP_us=""
+
+ ## Gentoo is nuts
+ export GROFF_NO_SGR=1
+}
diff --git a/shell/conf b/shell/conf
new file mode 100644
index 0000000..8ea9d27
--- /dev/null
+++ b/shell/conf
@@ -0,0 +1,65 @@
+
+SHELL_CONFIG=".mkshrc"
+COLOR=0
+
+export EDITORS="ed vi vim "
+export PATH="$HOME/bin:$PATH"
+
+UPDATE_URL="https://www.rygel.us/etc/"
+VIM_GIT_URL="https://git.riedstra.us/mitch/vim-cfg.git"
+VIM_BASIC_URL="https://git.riedstra.us/mitch/vim-cfg.git/plain/basic.vim"
+
+PRELOAD="$HOME/${SHELL_CONFIG}.pre"
+LOCAL="$HOME/${SHELL_CONFIG}.local"
+
+# Don't put any variables below this, as they can't be overridden before the
+# functions if you do that
+
+# Load pre config
+if [ -e $PRELOAD ] ; then
+ . $PRELOAD
+fi
+
+set_pager
+set_editor
+# requires misc
+set_go
+
+setaliases
+setsudoaliases
+
+
+# Nasty conditional for support of many different shells
+if
+ [ $SHELL = "/bin/ksh" ] ||
+ [ $SHELL = "/bin/mksh" ] ||
+ [ $SHELL = "/usr/bin/mksh" ] ||
+ [ $SHELL = "/usr/local/bin/mksh" ] ||
+ ! [ -z "$KSH_VERSION" ]
+then
+ export HISTFILE="$HOME/.ksh_history"
+ set -o emacs
+ bind ^L=clear-screen
+ if [ $COLOR -eq 1 ] ; then
+ set_prompt
+ else
+ set_basic_prompt
+ fi
+elif [ $SHELL = "/bin/sh" ] && [ "$(uname)" = "FreeBSD" ] ; then
+ set -o emacs
+ export PS1="$(whoami)"'@\h:\w \$ '
+else
+ [ $SHELL = "/bin/sh" ] && export PS1="$ "
+fi
+
+if [ $COLOR -eq 1 ] ; then
+ colormanpages
+ setcolorterminal
+ setcoloraliases
+ setlscolors
+fi
+
+# Include local configuration options
+if [ -f $LOCAL ] ; then
+ . $LOCAL
+fi
diff --git a/shell/ksh b/shell/ksh
new file mode 100644
index 0000000..811b15b
--- /dev/null
+++ b/shell/ksh
@@ -0,0 +1,79 @@
+# If you wish to prevent non KSH shells from running this
+# [ -z "$KSH_VERSION" ] && return
+
+# Restrict this to KSH only
+if ! [ -z "$KSH_VERSION" ] ; then
+ precmd() {
+ typeset e=$?
+
+ (( e )) && print -n "$e|"
+ }
+ set_ps1() {
+ PS1='$(precmd)${BG}${ACCENT_C}${ACCENT_P}${USER_C}${USER:=$(id -un)}@$(hostname)${ACCENT_C}${ACCENT_P} ${ACCENT_P}${PATH_C}${PWD:-?}${ACCENT_C}${ACCENT_P}${END_C}
+ ${END_P} '
+ export PS1;
+ }
+ set_root_ps1() {
+ PS1='$(precmd)${BG}${ACCENT_C}${ACCENT_P}${HOST_C}$(hostname)${ACCENT_C}${ACCENT_P} ${ACCENT_P}${PATH_C}${PWD:-?}${ACCENT_C}${ACCENT_P}${END_C}
+ ${END_P} '
+ export PS1;
+ }
+ # RED: 31, GREEN: 32, YELLOW: 33, BLUE: 34, MAGENTA: 35, CYAN: 36, WHITE: 37, GREY 38. and No color which is 0.
+ set_prompt() {
+ if [ `id -u` -eq 0 ] ; then
+ # Previously
+ # Red for root, and no username
+ # PS1="$(hostname) \$PWD
+ echo $TERM | grep "256color$" > /dev/null 2>&1
+ if [ $? -eq 0 ] ; then
+ BG=""
+ ACCENT_C=""
+ ACCENT_P="|"
+ HOST_C=""
+ PATH_C=""
+ END_C=""
+ set_root_ps1
+ END_P="#"
+ else
+ BG=""
+ ACCENT_C=""
+ ACCENT_P="|"
+ HOST_C=""
+ PATH_C=""
+ END_P="#"
+ fi
+ set_root_ps1
+ else
+ # Previously
+ # PS1="${USER:=$(id -un)}@$(hostname) \$PWD
+ echo $TERM | grep "256color$" > /dev/null 2>&1
+ if [ $? -eq 0 ] ; then
+ BG=""
+ ACCENT_C=""
+ ACCENT_P="|"
+ USER_C=""
+ PATH_C=""
+ END_C=""
+ END_P="%"
+ else
+ BG=""
+ ACCENT_C=""
+ ACCENT_P="|"
+ USER_C=""
+ PATH_C=""
+ END_C=""
+ END_P="$"
+ fi
+ set_ps1
+ fi
+ }
+ set_basic_prompt() {
+ if [ $(id -u) -eq 0 ] ; then
+ PS1='$(precmd)'"${USER:=$(id -un)}@$(hostname) \$PWD # "
+ else
+ PS1='$(precmd)'"${USER:=$(id -un)}@$(hostname) \$PWD $ "
+ fi
+ export PS1;
+ }
+fi
+
diff --git a/shell/misc b/shell/misc
new file mode 100644
index 0000000..c589f10
--- /dev/null
+++ b/shell/misc
@@ -0,0 +1,34 @@
+
+set_go() {
+ export GOPATH="${GOPATH:-$HOME/go}"
+ export PATH="$GOPATH/bin:$PATH"
+
+ _gobin="/usr/local/go/bin"
+ if [ -e "$_gobin" ] ; then
+ export PATH="$_gobin:$PATH"
+ fi
+}
+pkg_switch_branch() {
+ _f="/etc/pkg/FreeBSD.conf"
+ cp $_f ${_f}.orig
+ sed -e's/quarterly/latest/' < ${_f}.orig > ${_f}
+}
+# System setup `chroot`, useful mainly on Linux
+syschroot() {
+ CHDIR=$1
+ PROG=$2
+ CUR_PS1="$PS1"
+ PS1="(CHROOT) # "
+ mount -t proc none "$CHDIR/proc"
+ mount -o bind /dev "$CHDIR/dev"
+ mount -o bind /dev/pts "$CHDIR/dev/pts"
+ mount -o bind /sys "$CHDIR/sys"
+ mount -o bind /run "$CHDIR/run"
+ if [ "$PROG" = "/bin/bash" ] ; then
+ PS1="(CHROOT) [ \u@\h \w ] # "
+ fi
+ chroot "$CHDIR" "$PROG"
+ umount "$CHDIR/dev/pts" "$CHDIR/dev" "$CHDIR/sys" "$CHDIR/proc" \
+ "$CHDIR/run"
+ PS1="$CUR_PS1"
+}
diff --git a/shell/notice b/shell/notice
new file mode 100644
index 0000000..bed1988
--- /dev/null
+++ b/shell/notice
@@ -0,0 +1,13 @@
+# Copyright 2019 Mitchell Riedstra
+
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
diff --git a/shell/update b/shell/update
new file mode 100644
index 0000000..0621f2a
--- /dev/null
+++ b/shell/update
@@ -0,0 +1,117 @@
+
+pulltermcolors() {
+ file="$HOME/bin/terminal-colors"
+ if ! [ -d $HOME/bin ] ; then
+ mkdir $HOME/bin
+ fi
+ pull -u ${UPDATE_URL}/terminal-colors -f $file
+ chmod +x $file
+}
+
+pull() {
+ url=""
+ file=""
+ while [ $# -gt 0 ] ; do
+ case $1 in
+ -f)
+ file="$2"
+ shift; shift; ;;
+ -u)
+ url="$2"
+ shift; shift; ;;
+ esac
+ done
+ CMD="$(which curl wget fetch 2>/dev/null | tail -n1)"
+
+ case $CMD in
+ *curl) "$CMD" "$url" > "$file" ;;
+ *wget) "$CMD" "$url" -O "$file" ;;
+ *fetch) "$CMD" "$url" -o "$file" ;;
+ esac
+}
+pulldotfile() {
+ file="$1"
+ pull -u "${UPDATE_URL}${file}" -f "$HOME/.${file}"
+}
+_make_ssh_dir_if_not_exists() {
+ auth_keys="$HOME/.ssh/authorized_keys"
+ if ! [ -d $HOME/.ssh ] ; then mkdir $HOME/.ssh ; fi
+ chmod 700 $HOME/.ssh
+ chmod 600 $auth_keys
+}
+_pullkeys() {
+ url="$1"; shift
+ _timestamp="$(timestamp)"
+ _make_ssh_dir_if_not_exists
+ auth_keys="$HOME/.ssh/authorized_keys"
+ mv "$auth_keys" "${auth_keys}.${_timestamp}" || \
+ echo "Authorized Keys do not currently exist"
+ pull -u "$url" -f "$auth_keys" || \
+ mv "${auth_keys}.${_timestamp}" "$auth_keys"
+ ssh-keygen -lf "$auth_keys" || \
+ mv "${auth_keys}.${_timestamp}" "$auth_keys"
+
+ chmod 600 $auth_keys
+}
+pullkeys() {
+ file="keys/$1"; shift;
+ url="${UPDATE_URL}${file}"
+ _pullkeys "$url"
+}
+pullkeys_github() {
+ _username="$1"; shift;
+ url="https://github.com/${_username}.keys"
+ _pullkeys "$url"
+}
+updatetmuxconf() {
+ pulldotfile "tmux.conf"
+ pulldotfile "tmux_helper.sh"
+ if ! [ -e $HOME/.tmux.conf.local ] && [ `id -u` -eq 0 ] ; then
+ # If I ever change the color from green this will have to be updated I guess
+ grep 'green' $HOME/.tmux.conf | sed -e's/green/red/g' > $HOME/.tmux.conf.local
+ elif ! [ -e $HOME/.tmux.conf.local ] ; then
+ touch $HOME/.tmux.conf.local
+ fi
+}
+updategitconf() {
+ file="gitconfig/$1"
+ pull -u "${UPDATE_URL}${file}" -f "$HOME/.gitconfig"
+}
+updateshell() {
+ pulldotfile "mkshrc"
+ . $HOME/.mkshrc
+}
+updatevimrc() {
+ OLDWD="$(pwd)"
+ cd $HOME
+ git clone $VIM_GIT_URL .vim
+ if [ $? -gt 0 ] ; then
+ cd $HOME/.vim
+ git pull origin master
+ else
+ cd $HOME/.vim
+ fi
+ ./setup.sh && \
+ ./link-vimrc.sh
+ cd $OLDWD
+}
+updatevimrc_basic() {
+ pull -u "$VIM_BASIC_URL" -f ~/.vimrc
+}
+placebasicvimrc() {
+ if [ -z "$1" ] ; then
+ echo All arguments are passed to SSH, but you need at least one
+ return
+ fi
+ _TMP="$(mktemp)"
+ if [ -z "$_TMP" ] ; then
+ echo Cannot continue, temp file cannot be zero length!;
+ return
+ fi
+ pull -u "$VIM_BASIC_URL" -f "$_TMP"
+ cat "$_TMP" | ssh "$@" "cat - > ~/.vimrc"
+ rm "$_TMP"
+}
+
+
+
diff --git a/shell/utils b/shell/utils
new file mode 100644
index 0000000..c597e8a
--- /dev/null
+++ b/shell/utils
@@ -0,0 +1,120 @@
+
+set_editor() {
+ if [ -z "$EDITORS" ] ; then
+ export EDITORS="ed vi vim"
+ fi
+
+ export EDITOR="$(which $EDITORS 2>/dev/null | tail -n1)"
+
+ export VISUAL="$EDITOR"
+
+ # Set an alias for our editor of choice
+ alias vi="$EDITOR"
+ alias vim="$EDITOR"
+ alias edit="$EDITOR"
+ alias e="$EDITOR"
+}
+set_pager() {
+ export PAGER="$(which cat more less 2>/dev/null | tail -n1)"
+}
+set_lang() {
+export CHARSET="$1";
+export LANG="$1";
+}
+
+# Usage debugstarttls $ipaddr:$port
+debugstarttls() {
+ openssl s_client -starttls smtp -crlf -connect "$1" "$2"
+}
+
+randmacgen() {
+ if [ "$(uname)" = "FreeBSD" ] ; then
+ LC_COLLATE=c
+ fi
+ tr -c -d '0123456789abcdef' < /dev/urandom \
+ | head -c 12 \
+ | sed 's!^M$!!;s!\-!!g;s!\.!!g;s!\(..\)!\1:!g;s!:$!!'
+ echo ""
+}
+# First argument is the interface on which to scan
+ipv6_local_hosts() {
+if ! [ -z $1 ] ; then
+ interface="$1"
+ ping6 -c 3 ff02::2%$interface \
+ | grep 'bytes from' \
+ | awk '{print $4}' \
+ | sort \
+ | uniq \
+ | sed -e's/:$//'
+else
+ echo "You need to specify an interface"
+fi
+}
+set_nocaps() {
+ setxkbmap -layout "us,de"
+ setxkbmap -option ctrl:nocaps
+ setxkbmap -option shift:breaks_caps
+ setxkbmap -option numpad:microsoft
+ setxkbmap -option grp:alt_space_toggle
+}
+# Usage: dir_oct:file_oct path
+setperms() {
+ _perm="$1"; shift
+ dir_perms=$(echo "$_perm" | awk -F: '{print $1}')
+ file_perms=$(echo "$_perm" | awk -F: '{print $2}')
+ find "$@" -type f -print0 | xargs -0 chmod "$file_perms"
+ find "$@" -type d -print0 | xargs -0 chmod "$dir_perms"
+}
+
+set_title() {
+ printf $'\033]0;'"%s"$'\007' "$1"
+}
+
+set_my_title() {
+ _load="Load Avg: $(_sys_load)"
+ _free_mem="M Free: $(_sys_memory)"
+ _uptime="Uptime: $(_sys_uptime)"
+ set_title "$(id -un)[$(hostname)] -- $_load $_free_mem $_uptime"
+}
+
+_sys_memory() {
+ ! [ -e $(which vmstat) ] && return
+ if [ `uname` = "Linux" ] ; then
+ vmstat | tail -n1 | awk '{print $4/1024}' | sed -e's/\..*$//g'
+ elif [ `uname` = "FreeBSD" ] ; then
+ vmstat | tail -n1 | awk '{print $5/1024}' | sed -e's/\..*$//g'
+ elif [ `uname` = "OpenBSD" ] ; then
+ vmstat | sed -n '$p' | awk '{print $4}' | sed 's/M$//'
+ fi
+}
+
+_sys_load() {
+ # Works on BSD too, neat.
+ uptime | sed -re's/^.*load averages?: ([0-9]+\.[0-9]+).*$/\1/g'
+}
+
+_sys_uptime() {
+ # Took awhile to figure out, but this works on BSD as well
+ uptime | sed -re's/^.*up[ ]+//g' -e's/^([^,]*),.*/\1/g' -e's/^([^ ]+)[ ]*(.).*/\1\2/g'
+}
+
+
+timestamp() {
+ date +%m.%d.%y_%H.%M.%S
+}
+
+checkSSHAgent() {
+ ssh_agent_conf="$HOME/.ssh/agent"
+ if [ -e "$ssh_agent_conf" ] ; then
+ . "$ssh_agent_conf"
+ fi
+ if ! ps -eo pid | grep -q "$SSH_AGENT_PID" \
+ || ! [ -e "$ssh_agent_conf" ] \
+ || [ -z "$SSH_AGENT_PID" ] ; \
+ then
+ ssh-agent -s | grep -v echo > "$ssh_agent_conf"
+ . "$ssh_agent_conf"
+ fi
+}
+
+