.bashrc
changeset 270 19082e26bea6
parent 268 445d013283e6
child 279 5845d7aa3ca4
equal deleted inserted replaced
269:48b3cbdac750 270:19082e26bea6
       
     1 
       
     2 # set -x
       
     3 # set -u
     1 
     4 
     2 # XXX
     5 # XXX
     3 # [ -f /etc/bashrc ] && . /etc/bashrc
     6 # [[ -f /etc/bashrc ]] && . /etc/bashrc
     4 
       
     5 [ -d ~/usr/bin ] && export PATH="$PATH":~/usr/bin || :
       
     6 
     7 
     7 # XXX for mc, cvs, svn, ...
     8 # XXX for mc, cvs, svn, ...
     8 export EDITOR=vim
     9 export EDITOR=vim
     9 
    10 
    10 # XXX vim and gnome-terminal have support for 256 colours in fedora 8 at least
    11 # XXX vim and gnome-terminal have support for 256 colours in fedora 8 at least
    12 # export TERM=xterm-256color
    13 # export TERM=xterm-256color
    13 
    14 
    14 PS1='bash# '
    15 PS1='bash# '
    15 # Set magenta bold font.
    16 # Set magenta bold font.
    16 case "$TERM" in
    17 case "$TERM" in
    17   xterm*) PS1='\[\033[31m\033[1m\]\h\033[35m\]+bash# \[\033[0m\]'
    18   xterm*)
       
    19     PS1='\[\033[31m\033[1m\]\h\[\033[35m\]+bash# \[\033[0m\]'
       
    20     PS2='\[\033[32m\]> \[\033[0m\]'
    18   ;;
    21   ;;
    19 esac
    22 esac
    20 
    23 
    21 # if [ -f ~/.dircolors ]; then
    24 # if [[ -f ~/.dircolors ]]; then
    22 #   eval `dircolors -b ~/.dircolors`
    25 #   eval `dircolors -b ~/.dircolors`
    23 # fi
    26 # fi
    24 
    27 
    25 # Easy cd to often used dirs.
    28 # Easy cd to often used dirs.
    26 CDPATH=.:~:~/devel:~/devel/my-devel
    29 CDPATH=.:~:~/devel:~/devel/my-devel
    82 alias ...="cd ../.."    #go to grandparent dir
    85 alias ...="cd ../.."    #go to grandparent dir
    83 alias -- -="cd -"       # go to previous dir
    86 alias -- -="cd -"       # go to previous dir
    84 alias l.='ls -d .*'     #list hidden files
    87 alias l.='ls -d .*'     #list hidden files
    85 alias ll='ls -lhrt'     #extra info compared to "l"
    88 alias ll='ls -lhrt'     #extra info compared to "l"
    86 alias lld='ls -lUd */'  #list directories
    89 alias lld='ls -lUd */'  #list directories
       
    90 # I prefer EN man pages.
       
    91 alias man='LANG=C man'
       
    92 
       
    93 alias j='jobs '
    87 
    94 
    88 # make and change to a directory
    95 # make and change to a directory
    89 md () { mkdir -p "$1" && cd "$1"; }
    96 md () { mkdir -p "$1" && cd "$1"; }
    90 
    97 
    91 # GREP_COLOR=bright yellow on black bg.
    98 # GREP_COLOR=bright yellow on black bg.
   114 alias indent-bifit="indent -bap -bbo -br -brs -cdw -ce -cli0 -c0 -cs -d0 -di0 -hnl -l120 -lc90 -i4 -npcs -ppi 3 -npsl -nut -sbi4 -sc"
   121 alias indent-bifit="indent -bap -bbo -br -brs -cdw -ce -cli0 -c0 -cs -d0 -di0 -hnl -l120 -lc90 -i4 -npcs -ppi 3 -npsl -nut -sbi4 -sc"
   115 
   122 
   116 # canonicalize path (including resolving symlinks)
   123 # canonicalize path (including resolving symlinks)
   117 # alias realpath='readlink -f'
   124 # alias realpath='readlink -f'
   118 
   125 
       
   126 # Special case for CYGWIN to properly display russian letters in rxvt.
       
   127 # Don't forget set in Windows SHELL=/bin/bash. If default SHELL is sh then .bashrc will not be read.
       
   128 if [[ x$OSTYPE = xcygwin ]]; then
       
   129   export LANG=ru_RU.CP1251
       
   130   # Avoid permission problem in Cygwin.
       
   131   umask 0000
       
   132 fi
       
   133 
       
   134 export PATH=$PATH:~/usr/bin
       
   135 
       
   136 if [[ -z "$MANPATH" ]]; then
       
   137   export MANPATH=~/usr/share/man:
       
   138 else
       
   139   export MANPATH=$MANPATH:~/usr/share/man:
       
   140 fi
       
   141 
       
   142 if [[ -z "$INFOPATH" ]]; then
       
   143   export INFOPATH=~/usr/share/info:
       
   144 else
       
   145   export INFOPATH=$INFOPATH:~/usr/share/info:
       
   146 fi
       
   147 
       
   148 export PYTHONSTARTUP=~/.pystartup
       
   149 
       
   150 ################################################################
       
   151 # Key binding.
       
   152 
       
   153 set -o emacs
       
   154 
       
   155 bind '"\e/": dabbrev-expand'
       
   156 bind '"\ee": edit-and-execute-command'
       
   157 
       
   158 ################################################################
       
   159 # Completion.
       
   160 
       
   161 # user commands see only users
       
   162 complete -u su passwd write chfn groups slay w sux
       
   163 
       
   164 # bg completes with stopped jobs
       
   165 complete -A stopped -P '"%' -S '"' bg
       
   166 
       
   167 # other job commands
       
   168 complete -j -P '"%' -S '"' fg jobs disown
       
   169 
       
   170 # readonly and unset complete with shell variables
       
   171 complete -v readonly unset
       
   172 
       
   173 # set completes with set options
       
   174 complete -A setopt set
       
   175 
       
   176 # shopt completes with shopt options
       
   177 complete -A shopt shopt
       
   178 
       
   179 # helptopics
       
   180 complete -A helptopic help
       
   181 
       
   182 # unalias completes with aliases
       
   183 complete -a unalias
       
   184 
       
   185 # bind completes with readline bindings (make this more intelligent)
       
   186 complete -A binding bind
       
   187 
       
   188 # type and which complete on commands
       
   189 complete -c command type which
       
   190 
       
   191 # builtin completes on builtins
       
   192 complete -b builtin
       
   193 
       
   194 _hgsyncew() {
       
   195   local cur=${COMP_WORDS[COMP_CWORD]}
       
   196   COMPREPLY=( $(compgen -W "--push" -- $cur) )
       
   197   return 0
       
   198 }
       
   199 complete -F _hgsyncew -o nospace hgsyncew
       
   200 
       
   201 _pathsearch() {
       
   202   local prev cur=${COMP_WORDS[COMP_CWORD]}
       
   203   [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
       
   204   if [[ $prev = -d ]]; then
       
   205     COMPREPLY=()
       
   206     return 0
       
   207   fi
       
   208   case "$cur" in
       
   209     -*) COMPREPLY=( $(compgen -W "-d --delimiter= -h --help" -- $cur ) ) ;;
       
   210     *) COMPREPLY=() ;;
       
   211   esac
       
   212   return 0
       
   213 }
       
   214 complete -F _pathsearch -o nospace pathsearch
       
   215 
       
   216 _mycd() {
       
   217   local cur
       
   218   cur=${COMP_WORDS[COMP_CWORD]}
       
   219   if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then
       
   220     COMPREPLY=( $(compgen -d -- "$cur") )
       
   221     return 0
       
   222   fi
       
   223   local i j k
       
   224   for i in ${CDPATH//:/$'\n'}; do
       
   225     k="${#COMPREPLY[@]}"
       
   226     for j in $( compgen -d -- $i/$cur ); do
       
   227       COMPREPLY[k++]=${j#$i/}
       
   228     done
       
   229   done
       
   230   return 0
       
   231 }
       
   232 complete -F _mycd -o nospace cd
       
   233 
       
   234 _man() {
       
   235   local p
       
   236   local cur=${COMP_WORDS[COMP_CWORD]}
       
   237   if [[ $cur = /* || $cur = ./* ]]; then
       
   238     COMPREPLY=( $(compgen -f -- $cur) )
       
   239   fi
       
   240   local IFS=':
       
   241 '
       
   242   for p in /usr/share/man $MANPATH; do
       
   243     [[ -n $p ]] || continue
       
   244     p=( $p/man*/* )
       
   245     p=( ${p[@]##*/} )
       
   246     p=( ${p[@]%.gz} )
       
   247     p=( ${p[@]%.*} )
       
   248     p=( $(compgen -W '${p[@]}' -- $cur ) )
       
   249     COMPREPLY=( ${COMPREPLY[@]} ${p[@]} )
       
   250   done
       
   251 }
       
   252 complete -F _man man
       
   253 
       
   254 _make() {
       
   255   local i mk
       
   256   local dir=.
       
   257   local cur=${COMP_WORDS[COMP_CWORD]}
       
   258   if [[ $cur = -* ]]; then
       
   259     COMPREPLY=( $(compgen -W "-C -f" -- "$cur") )
       
   260     return 0
       
   261   fi
       
   262   [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
       
   263   for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
       
   264     case ${COMP_WORDS[i]} in
       
   265       -f) mk=${COMP_WORDS[i+1]} ;;
       
   266       -C) dir=${COMP_WORDS[i+1]} ;;
       
   267     esac
       
   268   done
       
   269   if [[ $prev = -C ]]; then
       
   270     COMPREPLY=( $(compgen -d -- "$cur") )
       
   271     return 0
       
   272   fi
       
   273   if [[ $prev = -f ]]; then
       
   274     COMPREPLY=( $(cd $dir >/dev/null 2>&1; compgen -f -- "$cur") )
       
   275     return 0
       
   276   fi
       
   277   mk=$dir/$mk
       
   278   [[ -f $mk ]] || mk=$(eval echo $dir/[Mm]akefile)
       
   279   [[ -f $mk ]] || return 1
       
   280   COMPREPLY=( $(compgen -W "$(sed -n -e '/^[[:alnum:]_-]*:/{s=^\([^:]*\):.*=\1=;p;}' $mk)" -- $cur) )
       
   281   return 0
       
   282 }
       
   283 complete -F _make make gmake pmake
       
   284 
       
   285 _cygcheck() {
       
   286   local opt
       
   287   local cur=${COMP_WORDS[COMP_CWORD]}
       
   288   case $COMP_CWORD in
       
   289     1)
       
   290       case $cur in
       
   291         -*)
       
   292           COMPREPLY=( $(compgen -W "-v --verbose -h --help -V --version -c --check-setup -s --sysinfo
       
   293             -k --keycheck -f --find-package -l --list-package -p --package-query" -- "$cur") )
       
   294           return 0 ;;
       
   295         *)
       
   296           COMPREPLY=( $(compgen -c -- "$cur") )
       
   297           return 0 ;;
       
   298       esac
       
   299       ;;
       
   300     2)
       
   301       opt=${COMP_WORDS[1]}
       
   302       case $opt in
       
   303         -c|--check-setup|-l|--list-package)
       
   304           pkgs=( /etc/setup/*.lst.gz )
       
   305           pkgs=( ${pkgs[@]##*/} )
       
   306           pkgs=( ${pkgs[@]%.lst.gz} )
       
   307           COMPREPLY=( $(compgen -W '${pkgs[@]}' -- $cur ) )
       
   308           return 0;;
       
   309       esac
       
   310       return 0;;
       
   311   esac
       
   312   return 0
       
   313 }
       
   314 complete -F _cygcheck cygcheck.exe cygcheck
       
   315 
   119 # Use bash-completion, if available.
   316 # Use bash-completion, if available.
   120 if [ -f /etc/bash_completion ]; then
   317 if [ -f /etc/bash_completion ]; then
   121   # Under Cygwin bash completition start a long time.
   318   # Under Cygwin bash completition start a long time.
   122   if [ ! "$OSTYPE" = cygwin ]; then
   319   if [ ! "$OSTYPE" = cygwin ]; then
   123     . /etc/bash_completion
   320     . /etc/bash_completion
   129   fi
   326   fi
   130 fi
   327 fi
   131 if [ -f $HOME/usr/etc/bash_completion ]; then
   328 if [ -f $HOME/usr/etc/bash_completion ]; then
   132   . $HOME/usr/etc/bash_completion
   329   . $HOME/usr/etc/bash_completion
   133 fi
   330 fi
   134 
       
   135 # Special case for CYGWIN to properly display russian letters in rxvt.
       
   136 # Don't forget set in Windows SHELL=/bin/bash. If default SHELL is sh then .bashrc will not be read.
       
   137 if [ -n "$COMSPEC" ]; then
       
   138   if [ x$OSTYPE = xcygwin ]; then
       
   139     export LANG=ru_RU.CP1251
       
   140   fi
       
   141 fi
       
   142 
       
   143 export PATH=$PATH:~/usr/bin
       
   144 
       
   145 if [ -z "$MANPATH" ]; then
       
   146   export MANPATH=~/usr/share/man:
       
   147 else
       
   148   export MANPATH=$MANPATH:~/usr/share/man:
       
   149 fi
       
   150 
       
   151 if [ -z "$INFOPATH" ]; then
       
   152   export INFOPATH=~/usr/share/info:
       
   153 else
       
   154   export INFOPATH=$INFOPATH:~/usr/share/info:
       
   155 fi
       
   156 
       
   157 ################################################################
       
   158 # Key binding.
       
   159 
       
   160 set -o emacs
       
   161 
       
   162 bind '"\e/": dabbrev-expand'
       
   163 bind '"\ee": edit-and-execute-command'
       
   164 
       
   165 ################################################################
       
   166 # Completion.
       
   167 
       
   168 # user commands see only users
       
   169 complete -u su passwd write chfn groups slay w sux
       
   170 
       
   171 # bg completes with stopped jobs
       
   172 complete -A stopped -P '"%' -S '"' bg
       
   173 
       
   174 # other job commands
       
   175 complete -j -P '"%' -S '"' fg jobs disown
       
   176 
       
   177 # readonly and unset complete with shell variables
       
   178 complete -v readonly unset
       
   179 
       
   180 # set completes with set options
       
   181 complete -A setopt set
       
   182 
       
   183 # shopt completes with shopt options
       
   184 complete -A shopt shopt
       
   185 
       
   186 # helptopics
       
   187 complete -A helptopic help
       
   188 
       
   189 # unalias completes with aliases
       
   190 complete -a unalias
       
   191 
       
   192 # bind completes with readline bindings (make this more intelligent)
       
   193 complete -A binding bind
       
   194 
       
   195 # type and which complete on commands
       
   196 complete -c command type which
       
   197 
       
   198 # builtin completes on builtins
       
   199 complete -b builtin
       
   200