]> git.phdru.name Git - dotfiles.git/blob - .shellrc
.bashrc, .shellrc: Move `cdgitpath`
[dotfiles.git] / .shellrc
1 #
2 # $HOME/.shellrc
3 #
4
5 # If not running interactively, don't do anything
6 case $- in
7     *i*) ;;
8       *) return ;;
9 esac
10
11 # Stop if non-interactive shell
12 [ -z "$PS1" ] && return
13
14 #if [ -x /usr/bin/dircolors ]; then
15 #   # I don't like these aliases - they work only in command line
16 #   # but not in scripts I run from command line.
17 #   # Color parameters must be passed via environment.
18 #   # So instead I put them in shell scripts in ~/bin.
19 #   alias ls='ls --color=auto'
20 #   alias dir='dir --color=auto'
21 #   alias vdir='vdir --color=auto'
22 #
23 #   alias grep='grep --color=auto'
24 #   alias fgrep='fgrep --color=auto'
25 #   alias egrep='egrep --color=auto'
26 #
27 #   alias dmesg='dmesg --human'
28 #fi
29
30
31 case "$HOME" in
32     /home/*)
33         if [ -L /home ]; then
34             START_DIR="`pwd`" &&
35             cd "$HOME" &&
36             HOME="`pwd`" &&
37             cd "$START_DIR"
38         fi
39     ;;
40 esac
41
42 if test -n "$KSH_VERSION" -o -n "$FCEDIT"; then
43     back() { cd - "$@"; }
44     j() { jobs; }
45 fi
46
47 # clear screen and history, logout
48 chlo() { clear; cd; >$HISTFILE; unset HISTFILE; history -c; logout || exit; }
49
50 if [ -n "$STY" -a "$WINDOW" != 0 ]; then
51     #unset MAILCHECK everywhere except for the 1st GNU screen window
52     unset MAILCHECK
53 fi
54
55 if test -x /usr/bin/git >/dev/null 2>&1; then
56     # chdir to a directory
57     cdgitpath() {
58         if [ $# -ne 1 ]; then
59             echo "Usage: cdgitpath path_key" >&2
60             return 1
61         fi
62
63         path_key="$1"
64         if [ -z "$path_key" ]; then
65             echo "Usage: cdgitpath path_key" >&2
66             return 1
67         fi
68
69         path_url="`git config --get --path $path_key`"
70         if echo "$path_url" | grep -q '^file:/'; then
71             path_url="`echo \"$path_url\" | sed 's@^file:/\+@/@'`"
72         fi
73         cd "$path_url"
74     }
75 fi
76
77 include() {
78     cfg="$1"
79     shift
80     if [ -f "./$cfg" -a -r "./$cfg" ]; then
81         echo "Reading config file \`$cfg'" 1>&2
82         . "./$cfg" "$@"
83     elif [ -f "$HOME/lib/config/$cfg" -a -r "$HOME/lib/config/$cfg" ]; then
84         echo "Reading config file \`$HOME/lib/config/$cfg'" 1>&2
85         . "$HOME/lib/config/$cfg" "$@"
86     else
87         echo "Cannot find config file \`$cfg'" 1>&2
88     fi
89 }
90
91
92 [ "`type -t mc`" = alias ] && unalias mc
93 mc() {
94     if [ -n "$SLOWTERM" ]; then
95         MC_SLOW="--slow"
96     fi
97
98     case "$TERM" in
99         screen*) # screen, screen.rxvt
100             MC_XTERM="-x"
101         ;;
102     esac
103
104     #TMPDIR="$HOME"/tmp
105     #export TMPDIR
106
107     MC_FOUND=NO
108
109     for wrapper in \
110             /usr/local/share/mc/bin/mc-wrapper.sh \
111             /usr/local/libexec/mc/mc-wrapper.sh \
112             /usr/share/mc/bin/mc-wrapper.sh; do
113         if [ -r $wrapper ]; then
114             . $wrapper $MC_SLOW $MC_XTERM "$@"
115             rc=$?
116             MC_FOUND=YES
117             break
118         fi
119     done
120
121     if [ $MC_FOUND = NO ]; then
122         for mc in /usr/local/bin/mc /usr/bin/mc; do
123             if [ -x $mc ]; then
124                 MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER"
125                 if [ ! -d MC_TMP_DIR="${TMPDIR-/tmp}/mc-$USER" ]; then
126                     MC_TMP_DIR="${TMPDIR-/tmp}"
127                 fi
128                 MC_PWD_FILE="$MC_TMP_DIR/mc.pwd.$$"
129                 mc_type="`mc_type.py $mc`"
130                 if [ "$mc_type" = old ]; then
131                     $mc -P $MC_SLOW $MC_XTERM "$@" > "$MC_PWD_FILE"
132                 elif [ "$mc_type" = new ]; then
133                     $mc -P "$MC_PWD_FILE" $MC_SLOW $MC_XTERM "$@"
134                 else
135                     continue
136                 fi
137                 rc=$?
138                 MC_FOUND=YES
139                 cd "`cat \"$MC_PWD_FILE\"`" && /bin/rm "$MC_PWD_FILE"
140                 break
141             fi
142         done
143     fi
144
145     if [ $MC_FOUND = NO ]; then
146         echo "Cannot find mc-wrapper.sh or mc" >&2
147         rc=1
148     fi
149
150     unset MC_FOUND MC_PWD_FILE MC_SLOW MC_TMP_DIR MC_XTERM
151
152     return $rc
153 }
154
155
156 mkcd() {
157     if [ $# -ne 1 ]; then
158         echo "Usage: mkcd directory_name" >&2
159     elif [ -d "$1" ]; then
160         cd "$1"
161     elif [ -e "$1" ]; then
162         echo "Error: $1 is a file" >&2
163     else
164         mkdir -p "$1" && cd "$1"
165     fi
166 }
167
168
169 if which tmux >/dev/null 2>&1; then
170     tmux() {
171         case "$TERM" in
172             rxvt)
173                 TERM=rxvt-unicode command tmux "$@"
174             ;;
175
176             *)
177                 command tmux "$@"
178             ;;
179         esac
180     }
181 fi
182
183
184 vim() {
185     command vim "$@"
186     rc=$?
187     cd "`cat \"$HOME/tmp/vim/cwd\"`" && /bin/rm "$HOME/tmp/vim/cwd" &&
188     return $rc
189 }
190
191
192 if [ "$SHLVL" -eq 1 ] && which startx >/dev/null 2>&1; then
193     X() { startx >> .Xserver.log 2>&1; cyr; /bin/rm -f .Xauthority; }
194 fi
195
196 x() { exit; }