summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bash_defns153
-rw-r--r--.bashrc145
-rw-r--r--.emacs.d/init-spw.el4
3 files changed, 160 insertions, 142 deletions
diff --git a/.bash_defns b/.bash_defns
new file mode 100644
index 00000000..599bc6fc
--- /dev/null
+++ b/.bash_defns
@@ -0,0 +1,153 @@
+# This file contains core aliases & functions which we want to be available in
+# the non-interactive shells launched by M-! and M-& in Emacs
+
+shopt -s expand_aliases
+
+# --- aliases
+
+alias g="git"
+alias ga="git annex"
+alias mrs="src-register-all && mr -m status"
+# useful to check whether a rebase introduced any changes to files
+alias rld="git diff @{1}..@{0}"
+alias athvpn="sshuttle -r athena 0/0 --dns"
+alias soffice-pdf="soffice --headless --convert-to pdf"
+alias whitenoise="echo -en \"\033]0;whitenoise\a\";\
+ cvlc --quiet --loop ~/annex/media/sounds/R*.ogg"
+
+alias host-suite-build-deps='mk-build-deps -ir -s sudo -t \
+ "apt-get --no-install-recommends"'
+alias sid-build-deps='mk-build-deps -ir -s sudo -t \
+ "apt-get -o Debug::pkgProblemResolver=yes -t sid --no-install-recommends"'
+alias bts-policy="bts user debian-policy@packages.debian.org \
+ , package debian-policy , "
+alias dak-rdeps="ssh mirror.ftp-master.debian.org dak rm -Rn"
+alias afsid="apt-file --filter-suites unstable"
+alias dinstall="curl https://ftp-master.debian.org/dinstall.status;echo -n 'Right now: ';date -u '+%a %b %d %T %Z %Y (%s)'"
+# use with care, in order for this to actually provide a security advantage
+alias update-debian-known-hosts="scp master.debian.org:/etc/ssh/ssh_known_hosts ~/src/dotfiles/.ssh/known_hosts_debian"
+alias grepcopy="grep --color=always -Eir '(copyright|©)' * | less -R"
+# from dgit-user(7), this pushes a non-native package through sbuild
+# without an orig.tar for the version in the first changelog entry.
+# Useful for sbuilding an unreleased version of a package I maintain
+# upstream
+alias sbuild-prerelease="sbuild --dpkg-source-opts='-Zgzip -z1 --format=1.0 -sn'"
+
+# alias does not call `git develacc` because we want manual
+# verification of what is to be pushed (i.e. `git diff
+# master..develacc/develacc-iris` to check patch queue is sane)
+alias push-develacc-dotfiles-branch="git push \
+ -f origin develacc/develacc-$(hostname -s):develacc-$(hostname -s)"
+
+alias spin-this-host-now='(cd /usr/local/propellor && sudo ./propellor)'
+
+# --- more powerful aliases built with shell functions
+
+package-plan-unpack () {
+ package="$1"
+ patches="$HOME/src/package-plan/patches/${package%-*}/${package##*-}"
+ cd /tmp
+ cabal unpack --pristine "$package"
+ cd "$package"
+ mkdir -p "$patches"
+ ln -s "$patches" patches
+ ls "$(readlink $patches)"
+}
+
+# tidy up if I deleted files from stowed repos without properly
+# restowing
+kill-broken-stowed-symlinks () {
+ find "$HOME" -xtype l | while read -r link; do
+ if readlink "$link" | grep --quiet "^[../]*/.STOW/"; then
+ rm "$link"
+ fi
+ done
+}
+
+# install package(s) and immediately mark as auto installed, so it
+# will get cleaned up by the next autoclean.
+# --no-install-recommends is needed as otherwise packages are manually
+# installed beyond those specified on the command line
+install-as-auto () {
+ if [[ $EUID -ne 0 ]]; then
+ sudo apt-get --no-install-recommends install "$@"
+ sudo apt-mark auto "$@"
+ else
+ apt-get --no-install-recommends install "$@"
+ apt-mark auto "$@"
+ fi
+}
+
+# PDF word count
+pdfwords () {
+ pdftotext "$1" - | wc -w
+}
+
+# also see soffice-pdf alias above
+soffice-pdf-all () {
+ for f in *.doc *.docx; do
+ soffice --headless --convert-to pdf "$f"
+ done
+}
+
+# Debian archive processing logs
+alias tail-dak="ssh ftp-master.debian.org tail -F \
+ /srv/ftp-master.debian.org/log/current"
+alias tail-queued="ssh ssh.upload.debian.org tail -F \
+ /srv/upload.debian.org/queued/run/log"
+grep-dak () {
+ ssh ftp-master.debian.org grep "$@" /srv/ftp-master.debian.org/log/current
+}
+grep-queued () {
+ ssh ssh.upload.debian.org grep "$@" /srv/upload.debian.org/queued/run/log
+}
+
+# sometimes a remote SSH session cannot get at my forwarded SSH agent
+# because an unwanted instance of gpg-agent running on the remote host
+# gets in the way. this is a way to kill off that unwanted agent. we
+# also need to restart the multiplexed SSH connection to get agent
+# forwarding working again. I think this problem is mostly caused by
+# the fact that I use gnupg as my SSH agent
+kill-remote-gpg () {
+ ssh "$1" 'rm -f $XDG_RUNTIME_DIR/gnupg/*'
+ ssh -O exit "$1"
+}
+
+# build debs from a Linux kernel source tree *without* calling `make clean`.
+#
+# The -dbg deb takes some time to build. To get rid of it when it's
+# not needed: scripts/config --disable DEBUG_INFO
+bindeb-pkg () {
+ ver="$(make kernelversion)"
+ date="$(date +%Y%m%d+%H%M)"
+ arch="$(dpkg --print-architecture)"
+ make -j$((2 * $(nproc))) bindeb-pkg \
+ LOCALVERSION=-spw \
+ KDEB_PKGVERSION=$ver-$date \
+ "$@"
+ echo "sudo apt-get install \
+../linux-{image,headers}-$ver-spw_$ver-${date}_$arch.deb"
+}
+
+# --- host-specific aliases/functions
+
+# not ftp-master.debian.org
+
+# this is useful for processing removal requests
+# (credits to Mark Wooding)
+#
+# alternative, by me, but involves spawning another process or two:
+#
+# command -v dak >/dev/null \
+# || alias dak="perl -MString::ShellQuote \
+# -we'system qw(ssh -t ftp-master.debian.org dak), shell_quote @ARGV'"
+if ! command -v dak >/dev/null; then
+ dak () {
+ local i
+ local c=
+ for i; do # implicit "in $@"
+ c="$c '${i/\'/\'\\\'\'}'"
+ done
+ ssh -t ftp-master.debian.org dak "$c"
+ }
+fi
diff --git a/.bashrc b/.bashrc
index fdd6683a..70b6f997 100644
--- a/.bashrc
+++ b/.bashrc
@@ -34,121 +34,30 @@ if [ -x /usr/bin/lesspipe ]; then
eval "$(lesspipe)"
fi
+. $HOME/.bash_defns
+
# --- aliases
alias ls="ls --color=auto --literal --classify"
alias grep="grep --colour=auto"
-alias g="git"
-alias ga="git annex"
alias e="$EDITOR"
-alias mrs="src-register-all && mr -m status"
alias d="emacsclient -cne '(dired \".\")' >/dev/null"
# alias m="emacsclient -c -n -e '(progn (magit-status \".\") \
# (delete-other-windows))' >/dev/null"
alias ta="tmux new-session -A -s default"
alias rax="screen -URaAx"
alias new-login-shell="exec su -l $USER" # get new UNIX group without relog
-alias whitenoise="echo -en \"\033]0;whitenoise\a\";\
- cvlc --quiet --loop ~/annex/media/sounds/R*.ogg"
-# useful to check whether a rebase introduced any changes to files
-alias rld="git diff @{1}..@{0}"
-alias athvpn="sshuttle -r athena 0/0 --dns"
-alias soffice-pdf="soffice --headless --convert-to pdf"
-
-alias host-suite-build-deps='mk-build-deps -ir -s sudo -t \
- "apt-get --no-install-recommends"'
-alias sid-build-deps='mk-build-deps -ir -s sudo -t \
- "apt-get -o Debug::pkgProblemResolver=yes -t sid --no-install-recommends"'
-alias bts-policy="bts user debian-policy@packages.debian.org \
- , package debian-policy , "
-alias dak-rdeps="ssh mirror.ftp-master.debian.org dak rm -Rn"
+
alias b="bts --mbox show"
-alias afsid="apt-file --filter-suites unstable"
-alias dinstall="curl https://ftp-master.debian.org/dinstall.status;echo -n 'Right now: ';date -u '+%a %b %d %T %Z %Y (%s)'"
-# use with care, in order for this to actually provide a security advantage
-alias update-debian-known-hosts="scp master.debian.org:/etc/ssh/ssh_known_hosts ~/src/dotfiles/.ssh/known_hosts_debian"
-alias grepcopy="grep --color=always -Eir '(copyright|©)' * | less -R"
-# from dgit-user(7), this pushes a non-native package through sbuild
-# without an orig.tar for the version in the first changelog entry.
-# Useful for sbuilding an unreleased version of a package I maintain
-# upstream
-alias sbuild-prerelease="sbuild --dpkg-source-opts='-Zgzip -z1 --format=1.0 -sn'"
# alias develacc='sudo machinectl shell spw@develacc \
# $(sudo enter-develacc /bin/sh -c "getent passwd spw | cut -d: -f7")'
# alias develaccr='sudo machinectl shell root@develacc \
# $(sudo enter-develacc /bin/sh -c "getent passwd root | cut -d: -f7")'
-# alias does not call `git develacc` because we want manual
-# verification of what is to be pushed (i.e. `git diff
-# master..develacc/develacc-iris` to check patch queue is sane)
-alias push-develacc-dotfiles-branch="git push \
- -f origin develacc/develacc-$(hostname -s):develacc-$(hostname -s)"
-
-alias spin-this-host-now='(cd /usr/local/propellor && sudo ./propellor)'
-
# --- more powerful aliases built with shell functions
-package-plan-unpack () {
- package="$1"
- patches="$HOME/src/package-plan/patches/${package%-*}/${package##*-}"
- cd /tmp
- cabal unpack --pristine "$package"
- cd "$package"
- mkdir -p "$patches"
- ln -s "$patches" patches
- ls "$(readlink $patches)"
-}
-
-# tidy up if I deleted files from stowed repos without properly
-# restowing
-kill-broken-stowed-symlinks () {
- find "$HOME" -xtype l | while read -r link; do
- if readlink "$link" | grep --quiet "^[../]*/.STOW/"; then
- rm "$link"
- fi
- done
-}
-
-# install package(s) and immediately mark as auto installed, so it
-# will get cleaned up by the next autoclean.
-# --no-install-recommends is needed as otherwise packages are manually
-# installed beyond those specified on the command line
-install-as-auto () {
- if [[ $EUID -ne 0 ]]; then
- sudo apt-get --no-install-recommends install "$@"
- sudo apt-mark auto "$@"
- else
- apt-get --no-install-recommends install "$@"
- apt-mark auto "$@"
- fi
-}
-
-# PDF word count
-pdfwords () {
- pdftotext "$1" - | wc -w
-}
-
-# also see soffice-pdf alias above
-soffice-pdf-all () {
- for f in *.doc *.docx; do
- soffice --headless --convert-to pdf "$f"
- done
-}
-
-# Debian archive processing logs
-alias tail-dak="ssh ftp-master.debian.org tail -F \
- /srv/ftp-master.debian.org/log/current"
-alias tail-queued="ssh ssh.upload.debian.org tail -F \
- /srv/upload.debian.org/queued/run/log"
-grep-dak () {
- ssh ftp-master.debian.org grep "$@" /srv/ftp-master.debian.org/log/current
-}
-grep-queued () {
- ssh ssh.upload.debian.org grep "$@" /srv/upload.debian.org/queued/run/log
-}
-
secs () {
for i in $(seq $1 -1 1); do
echo $i
@@ -157,17 +66,6 @@ secs () {
echo 0
}
-# sometimes a remote SSH session cannot get at my forwarded SSH agent
-# because an unwanted instance of gpg-agent running on the remote host
-# gets in the way. this is a way to kill off that unwanted agent. we
-# also need to restart the multiplexed SSH connection to get agent
-# forwarding working again. I think this problem is mostly caused by
-# the fact that I use gnupg as my SSH agent
-kill-remote-gpg () {
- ssh "$1" 'rm -f $XDG_RUNTIME_DIR/gnupg/*'
- ssh -O exit "$1"
-}
-
upenv () {
# don't want to do this outside of tmux as then tmux show-environment will
# show values for the 'default' session which may be irrelevant to us
@@ -179,22 +77,6 @@ upenv () {
update-emacs-daemon-environment
}
-# build debs from a Linux kernel source tree *without* calling `make clean`.
-#
-# The -dbg deb takes some time to build. To get rid of it when it's
-# not needed: scripts/config --disable DEBUG_INFO
-bindeb-pkg () {
- ver="$(make kernelversion)"
- date="$(date +%Y%m%d+%H%M)"
- arch="$(dpkg --print-architecture)"
- make -j$((2 * $(nproc))) bindeb-pkg \
- LOCALVERSION=-spw \
- KDEB_PKGVERSION=$ver-$date \
- "$@"
- echo "sudo apt-get install \
-../linux-{image,headers}-$ver-spw_$ver-${date}_$arch.deb"
-}
-
# --- host-specific aliases/functions
# ftp-master.debian.org
@@ -221,24 +103,3 @@ if [ -d "/srv/ftp-master.debian.org" ]; then
fi
}
fi
-
-# not ftp-master.debian.org
-
-# this is useful for processing removal requests
-# (credits to Mark Wooding)
-#
-# alternative, by me, but involves spawning another process or two:
-#
-# command -v dak >/dev/null \
-# || alias dak="perl -MString::ShellQuote \
-# -we'system qw(ssh -t ftp-master.debian.org dak), shell_quote @ARGV'"
-if ! command -v dak >/dev/null; then
- dak () {
- local i
- local c=
- for i; do # implicit "in $@"
- c="$c '${i/\'/\'\\\'\'}'"
- done
- ssh -t ftp-master.debian.org dak "$c"
- }
-fi
diff --git a/.emacs.d/init-spw.el b/.emacs.d/init-spw.el
index f51c155c..76014557 100644
--- a/.emacs.d/init-spw.el
+++ b/.emacs.d/init-spw.el
@@ -930,6 +930,10 @@ prefix argument."
(setq async-shell-command-buffer 'rename-buffer
shell-command-prompt-show-cwd t)
+(when (executable-find "bash")
+ (setq shell-file-name "bash")
+ (setenv "BASH_ENV" (expand-file-name "~/.bash_defns")))
+
;;;; TRAMP