-# i prefer to just use screen on remote sessions
-#if [[ $TERM != screen* ]]; then
-# exec screen -dRR
-#fi
+# man bash covers everything comprehensively of course. i use ~/.bash_profile
+# to source bashrc, and .profile just echos that the normal bash startup process
+# is not happening. I don't source bashrc in posix mode based on debian's
+# default, and posix mode is quirky, doesn't seem worth figuring it out This
+# setup ensures no distro can override anything, as they occasionally do things
+# I don't like. For example, debian's root .profile spamms with "mesg n"when
+# there is no tty. The mesg n ensures the terminal is not writable by other
+# users, but it is that way without the mesg n, and google search, and debian
+# wiki search, /usr/share/doc search gives no justification for it, and it's not
+# in fedora, so I'm pretty confident that it is useless redundant security, plus
+# it is purposefully in a user startup file, not a system one, so intended for
+# the user to change.
+
[[ -f ~/.bashrc ]] && . ~/.bashrc
export MANPAGER=cat
# for readline-complete.el
stty echo
+ # todo, remote file completion fails, figure out how to turn it off
fi
HISTTIMEFORMAT="%I:%M %p %m/%d "
# consecutive duplicate lines don't go in history
HISTCONTROL=ignoredups
-# just defensively unsetting this
-# this var can replace HISTCONTROL to do more flexible things like
-# not saving single char history items or specific names
-unset HISTIGNORE
+# works in addition to HISTCONTROL to do more flexible things
+# it could also do the same things as HISTCONTROL and thus replace it,
+# but meh
+HISTIGNORE="k *"
export BC_LINE_LENGTH=0
# this is idempotent
debian_pick_mirror () {
local x=$(mktemp -d)/f # safe way to get file name without creating one
- sudo netselect-apt -o $x || return 1
- x=$(_debian_pick_mirror_grep stable $x)
+ sudo netselect-apt -o "$x" || return 1
+ x=$(_debian_pick_mirror_grep stable "$x")
sudo cp -f /etc/apt/sources.list /etc/apt/sources.list-original
sudo sed -i "s/$(_debian_pick_mirror_grep wheezy)/$x/" /etc/apt/sources.list
+ aptitude update
}
_debian_pick_mirror_grep () {
grep -ri --binary-files=without-match --color=auto "$@"
}
+bashrcpush () {
+ local startdir="$PWD"
+ cd ~
+ for x in "$@"; do
+ ssh $x mkdir -p bin
+ tar cz bin/bash-programs-by-ian bin/semi-private .profile | ssh $x tar xz
+ done
+ cd $(mktemp -d)
+ cp ~/path_add-function ~/.bashrc ~/.bash_profile ~/.profile ~/.bashrc_profile .
+ for x in "$@"; do
+ tar cz path_add-function .bashrc | ssh $x tar xz
+ done
+ cd "$startdir"
+}
-
+# history search
+k() { grep -P "$@" ${HISTFILE:-~/.bash_history} | tail -n 40; }
calc() { echo "scale=3; $*" | bc -l; }
[[ $# == 1 ]] || { echo 'need a branch name!'; return 1;}
local gitroot
gitroot || return 1 # function to set gitroot
- builtin cd $gitroot
+ builtin cd "$gitroot"
git symbolic-ref HEAD refs/heads/$1
rm .git/index
git clean -fdx
perm_fix() {
local parent
if [[ $EUID == 0 ]]; then
- te "$1" || touch $1
+ te "$1" || touch "$1"
if [[ $(stat -c "%u" "$1") == 0 ]] ; then
argdir=$(getdir "$1")
if [[ $(stat -c "%u" "$argdir") != 0 ]] ; then
unset IFS
history -a # save history
history -n # read any new history
- if [[ ! DESKTOP_SESSION == xmonad && $TERM == *(screen*|xterm*|rxvt*) ]]; then
+ if [[ ! $DESKTOP_SESSION == xmonad && $TERM == *(screen*|xterm*|rxvt*) ]]; then
# from the screen man page
if [[ $TERM == screen* ]]; then
local title_escape="\033]..2;"