#!/bin/bash mimic=rxvt usage() { echo "Usage $0 [OPTIONS]" echo echo 'Options:' echo ' -r Use rxvt-style parsing of CMD for -e (execve)' echo ' -x Use xterm-style parsing of CMD for -e (system)' echo ' -e CMD Execute CMD instead of ${SHELL:-/bin/sh}' echo ' -h Show this message' } cmd=${SHELL:-/bin/sh} usage=false error=false while getopts 'rxe:h' flag; do case "$flag" in r) mimic=rxvt;; x) mimic=xterm;; e) if [[ $cmd == "${SHELL:-/bin/sh}" ]]; then cmd="$(mktemp -t "${0##*/}.XXXXXXXXXX")" trap "rm -f '$cmd'" EXIT { echo '#!/bin/bash' case "$mimic" in xterm) printf "sh -c %q\n" "$OPTARG" ;; rxvt) shift $(($OPTIND - 1)) printf '%q ' "$OPTARG" "$@" echo ;; esac } > "$cmd" chmod 755 "$cmd" else echo "$0: option -e may only be given once" >>/dev/stderr error=true fi ;; h) usage=true;; *) error=true;; esac done shift $(($OPTIND - 1)) if [[ $# != 0 ]]; then echo "$0: extra arguments: $*" >>/dev/stderr error=true fi if $error; then usage >>/dev/stderr exit 1 fi if $usage; then usage exit 0 fi emacsclient -a "" -c --eval "(ansi-term \"${cmd}\")" '(set-window-dedicated-p (selected-window) t)'