mirror of
https://github.com/jimeh/dotfiles.git
synced 2026-02-19 13:46:41 +00:00
added all shell configuration files
This commit is contained in:
148
shell/helpers/path_helpers.sh
Normal file
148
shell/helpers/path_helpers.sh
Normal file
@@ -0,0 +1,148 @@
|
||||
#
|
||||
# PATH Helpers
|
||||
#
|
||||
# A few useful functions to manipulate the PATH environment variable. Use,
|
||||
# modify, copy, steal, plunder these functions to your hearts content, at
|
||||
# your own risk of course :) --jimeh
|
||||
#
|
||||
|
||||
|
||||
# Print PATH as a newline separated list.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin
|
||||
# $ path_list
|
||||
# /usr/bin
|
||||
# /usr/local/bin
|
||||
#
|
||||
path_list () {
|
||||
echo -n "$PATH" | tr ":" "\n"
|
||||
}
|
||||
|
||||
# Append specified path to the end of PATH.
|
||||
#
|
||||
# Takes one argument:
|
||||
# - $1: path to add
|
||||
#
|
||||
# If $1 already exists it is first removed, and then added to the end of PATH.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin
|
||||
# $ path_append "/usr/sbin"
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin:/usr/sbin
|
||||
#
|
||||
path_append () {
|
||||
if [ ! -n "$1" ]; then return 2; fi
|
||||
path_remove "$1";
|
||||
export PATH="$PATH:$1";
|
||||
}
|
||||
|
||||
# Prepend specified path to the begnning of PATH.
|
||||
#
|
||||
# Takes one argument:
|
||||
# - $1: path to add
|
||||
#
|
||||
# If $1 already exists it is first removed, and then added to the beginning of
|
||||
# PATH.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin
|
||||
# $ path_prepend "/usr/sbin"
|
||||
# $ echo $PATH
|
||||
# /usr/sbin:/usr/bin:/usr/local/bin
|
||||
#
|
||||
path_prepend () {
|
||||
if [ ! -n "$1" ]; then return 2; fi
|
||||
path_remove "$1";
|
||||
export PATH="$1:$PATH";
|
||||
}
|
||||
|
||||
# Remove specified path from PATH.
|
||||
#
|
||||
# Takes one argument:
|
||||
# - $1: path to remove
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin
|
||||
# $ path_remove "/usr/local/bin"
|
||||
# $ echo $PATH
|
||||
# /usr/bin
|
||||
#
|
||||
path_remove () {
|
||||
if [ ! -n "$1" ]; then return 2; fi
|
||||
if [[ ":$PATH:" == *":$1:"* ]]; then
|
||||
export PATH=$(__path_clean `echo -n ":$PATH:" | sed "s;:$1;;"`)
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
# Add a path to PATH before another path.
|
||||
#
|
||||
# Takes two arguments:
|
||||
# - $1: path to add
|
||||
# - $2: target path to add $1 before
|
||||
#
|
||||
# If $1 already exists in PATH it is first removed, and then added before $2.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin
|
||||
# $ path_add_before "/usr/local/sbin" "/usr/local/bin"
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/sbin:/usr/local/bin
|
||||
#
|
||||
path_add_before () {
|
||||
if [ ! -n "$1" ] || [ ! -n "$2" ]; then return 2; fi
|
||||
if [[ ":$PATH:" == *":$2:"* ]]; then
|
||||
path_remove "$1"
|
||||
export PATH=$(__path_clean `echo -n ":$PATH:" | sed "s;:$2;:$1:$2;"`)
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
# Add a path to PATH after another path.
|
||||
#
|
||||
# Takes two arguments:
|
||||
# - $1: path to add
|
||||
# - $2: target path to add $1 after
|
||||
#
|
||||
# If $1 already exists in PATH it is first removed, and then added after $2.
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin
|
||||
# $ path_add_before "/usr/local/sbin" "/usr/local/bin"
|
||||
# $ echo $PATH
|
||||
# /usr/bin:/usr/local/bin:/usr/local/sbin
|
||||
#
|
||||
path_add_after () {
|
||||
if [ ! -n "$1" ] || [ ! -n "$2" ]; then return 2; fi
|
||||
if [[ ":$PATH:" == *":$2:"* ]]; then
|
||||
path_remove "$1"
|
||||
export PATH=$(__path_clean `echo -n ":$PATH:" | sed "s;:$2;:$2:$1;"`)
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
# Strips first and last character from intput string.
|
||||
#
|
||||
# Example:
|
||||
# __path_clean ":/bin:/usr/bin:" #=> /bin:/usr/bin
|
||||
#
|
||||
__path_clean () {
|
||||
echo -n "$1" | sed "s/.\(.*\)./\1/"
|
||||
}
|
||||
Reference in New Issue
Block a user