X-Git-Url: https://git.jankratochvil.net/?p=nethome.git;a=blobdiff_plain;f=.bashrc;h=842e9548fca8170722c09c7a2b7ffa0d50d70888;hp=c8c6a35cfa30cd9615e3151770b4a159f755c06b;hb=2834a1a303fcc0865f713ba2d4cdf9c486e30d27;hpb=f68927aa9edbd59038c0b1d339cc0d8269c5679a diff --git a/.bashrc b/.bashrc index c8c6a35..842e954 100644 --- a/.bashrc +++ b/.bashrc @@ -10,7 +10,8 @@ if [ -n "$_home_short_dotbashrc_norc" -o "${TERM#norc-}" != "$TERM" ];then export _home_short_dotbashrc=true fi -if [ -z "$_home_short_dotbashrc" ];then +# "$PS1" for interactive shells detection. +if [ -n "$PS1" -a -z "$_home_short_dotbashrc" ];then # We permit later reinitialization by unsetting it. # During our execution we forbid spawning to prevent deadlock by: # source /etc/bashrc @@ -19,7 +20,7 @@ if [ -z "$_home_short_dotbashrc" ];then export _home_short_dotbashrc=true # $TERM gets restored to its 'norc-' state after ~/.bashrc # alias norc='TERM="norc-$TERM" ssh -t -o 'NoHostAuthenticationForLocalhost yes' $USER@localhost "cd $PWD; TERM=$TERM;"' - function norc { TERM="norc-$TERM" ssh -t -o 'NoHostAuthenticationForLocalhost yes' $USER@localhost "cd $PWD; TERM=$TERM;" "$@"; }; export -f norc + function norc { TERM="norc-$TERM" ssh -t -o 'NoHostAuthenticationForLocalhost yes' $USER@localhost "cd $PWD; TERM=$TERM;" "$@"; } # Fix $USER and $LOGNAME (not $MAIL) for /etc/passwd line: # root-lace:x:0:0:root for Jan Kratochvil:/home/root-lace:/bin/bash @@ -67,36 +68,28 @@ function _bash_profile_addpath_fini # Use reverse order of preferred directories: # gid(1) dependency on: /opt/sfw/bin # EUID="`id -u 2>/dev/null || /usr/xpg4/bin/id -u 2>/dev/null || gid -u`" -_bash_profile_addpath -f PATH "/opt/SUNWspro/bin" -_bash_profile_addpath -f PATH "/usr/dist/exe" _bash_profile_addpath -f PATH "/sbin" _bash_profile_addpath -f PATH "/usr/sbin" -_bash_profile_addpath -f PATH "/opt/sfw/bin" -[ -x $HOME/bin/ProductivityTools-check ] && eval `$HOME/bin/ProductivityTools-check` -[ -n "$PATH_PRODUCTIVITY_TOOLS" ] && _bash_profile_addpath -f PATH "$PATH_PRODUCTIVITY_TOOLS" [ $EUID -eq 0 ] && _bash_profile_addpath -f PATH "/usr/local/sbin" _bash_profile_addpath -f PATH "/usr/local/bin" -_bash_profile_addpath -f LD_LIBRARY_PATH "/opt/sfw/lib" _bash_profile_addpath -f MANPATH "/usr/X11R6/man" _bash_profile_addpath -f MANPATH "/usr/share/man" _bash_profile_addpath -f MANPATH "/usr/local/man" _bash_profile_addpath -s JAVA_HOME "/usr/java" _bash_profile_addpath -s JAVA_HOME "/usr/local/java" uname_p="`uname -p 2>/dev/null || uname -m`" -[ "`uname`" = "SunOS" ] && _bash_profile_addpath -f LD_LIBRARY_PATH "$HOME/Netscape/dist/lib" for family in $HOME;do for arch in $family $family/$uname_p;do # Do not "-f": We use /net ! _bash_profile_addpath PATH "$arch/bin" - _bash_profile_addpath PATH "$arch/OpenOffice.org" - _bash_profile_addpath PATH "$arch/forte4j/extbin" _bash_profile_addpath -s JAVA_HOME "$arch/java" [ $EUID -eq 0 ] && _bash_profile_addpath PATH "$arch/sbin" + _bash_profile_addpath LD_LIBRARY_PATH "$arch/lib64" _bash_profile_addpath LD_LIBRARY_PATH "$arch/lib" _bash_profile_addpath MANPATH "$arch/man" done done -_bash_profile_addpath -f -s CVSROOT "short@vellum.cz:/home/short/pserver/cvs" # default +_bash_profile_addpath -f -s CVSROOT ":pserver:pserver:@cvs.jankratochvil.net/cvs" # default [ -n "$JAVA_HOME" ] && _bash_profile_addpath PATH "$JAVA_HOME/bin" _bash_profile_addpath -s CVSROOT "$HOME/pserver/cvs" _bash_profile_addpath -s CVSROOT "$HOME/cvs" @@ -105,10 +98,11 @@ _bash_profile_addpath -s ANT_HOME "/usr/local/ant" # /share/perl for Debian # /lib/perl for Debian # /lib/perl5 for Fedora Core -mkdir -p $HOME/lib/perl5 # otherwise CPAN will install to "$HOME/lib/site_perl" etc. +mkdir -p $HOME/lib{64,}/perl5 # otherwise CPAN will install to "$HOME/lib{64,}/site_perl" etc. _perlpatt="$(perl -MConfig -e 'print "{,/".$Config{$_}."}" for qw(version archname);')" -for _perldir in $(eval "echo {/usr,$HOME}{/lib{,64}/perl{,5},/share/perl}{,/site_perl}$_perlpatt");do - _bash_profile_addpath -f PERLLIB "$_perldir" +for _perldir in $(eval "echo {/usr,$HOME}{/lib{64,}/perl{,5},/share/perl}{,/site_perl}$_perlpatt");do + # $PERL5LIB overrides $PERLLIB and it is being used by: /etc/profile.d/atrpms.* + _bash_profile_addpath -f PERL5LIB "$_perldir" done unset _perldir @@ -116,44 +110,49 @@ unset -f _bash_profile_addpath _bash_profile_addpath_fini unset -f _bash_profile_addpath_fini -for i in tar ls find cp mv ln md5sum du grep ar chown chmod tail;do - # Prevent g$i from system directory overriding customized $i binary - ###which $i 2>/dev/null | grep /net/jsc-nfs.czech.sun.com/export/jscqa-local/ >/dev/null && continue - which g$i 2>/dev/null | grep '^/' >/dev/null && alias $i=g$i - done - -alias ls='ls -bF' -alias l='ls -lbF' -alias maple="ssh -t vega.fjfi.cvut.cz maple" -#alias cc='cc -I/home/short/include' -alias vi='vim' -alias grepb='grep --binary-files=binary' -alias L='lynx' -alias chown='chown --no-dereference' -alias chgrp='chgrp --no-dereference' -alias hexedit='hexedit -s' -alias cvs2cl='cvs2cl --window 3600 --separate-header --no-wrap' -alias cvsfiles='cvsutil --files --print' -alias cvsignores='cvsutil --ignores --print' -alias cvsignoresall='cvsutil --ignores --workings --print' -alias cvsignoresrm='cvsutil --ignores --rm' -alias cvsignoresrmall='cvsutil --ignores --workings --rm' -alias cvsignoresallrm='cvsutil --ignores --workings --rm' -[ "`uname`" = "SunOS" -a -x $HOME/bin/rpm-by-pkg ] && alias rpm='rpm-by-pkg' -alias disass='objdump -D --target=binary --architecture=i386' -alias cal='cal -m' -alias vncreadonly='vncviewer -FullColor -Shared -ViewOnly' -alias diff='diff -u' -alias rpmqf='rpm --qf "%{name}-%{version}-%{release}.%{arch}\n"' -alias rpmbuildlocal='rpmbuild --define "_topdir $PWD" --define "_builddir $PWD" --define "_rpmdir $PWD" --define "_sourcedir $PWD" --define "_specdir $PWD" --define "_srcrpmdir $PWD"' -alias gdbn='gdb -nx --command=~/.gdbinit' - # '2>/dev/null' to prevent: unalias: x: not found +# It must be run before `function's below as otherwise it would get embedded. unalias 2>/dev/null cp # -i unalias 2>/dev/null mv # -i unalias 2>/dev/null rm # -i unalias 2>/dev/null df # -h unalias 2>/dev/null du # -h +unalias 2>/dev/null ls # --color=auto +unalias 2>/dev/null l. # ls -d .* --color=auto +unalias 2>/dev/null ll # ls -l --color=auto + +# Aliases would get processed during the parsing of this script file! +eval ' + function grep {(unset grep; ( ulimitme; grep "$@"; ); );} + + function ls {(unset ls; ( ls -bF "$@"; ); );} + function l { ls -lbF "$@"; } + if which vim &>/dev/null;then + alias vi="vim" + else + echo >&2 "WARNING: No vim(1)." + fi + function grepb { grep --binary-files=binary "$@"; } + function L { lynx "$@"; } + function chown {(unset chown; ( chown --no-dereference "$@"; ); );} + function chgrp {(unset chgrp; ( chgrp --no-dereference "$@"; ); );} + function hexedit {(unset hexedit; ( hexedit -s "$@"; ); );} + function cvs2cl {(unset cvs2cl; ( cvs2cl --window 3600 --separate-header --no-wrap "$@"; ); );} + function cvsfiles { cvsutil --files --print "$@"; } + function cvsignores { cvsutil --ignores --print "$@"; } + function cvsignoresall { cvsutil --ignores --workings --print "$@"; } + function cvsignoresrm { cvsutil --ignores --rm "$@"; } + function cvsignoresrmall { cvsutil --ignores --workings --rm "$@"; } + function cvsignoresallrm { cvsutil --ignores --workings --rm "$@"; } + function svnignoresall { svn status |sed -n "s/^[?] //p" "$@"; } + function svnignoresallrm { svn status |sed -n "s/^[?] //p"|tr "\n" "\0"|xargs -0 rm -rf "$@"; } + function disass { objdump -D --target=binary --architecture=i386 "$@"; } + function cal {(unset cal; ( cal -m "$@"; ); );} + function vncreadonly { vncviewer -FullColor -Shared -ViewOnly "$@"; } + function diff {(unset diff; ( diff -up "$@"; ); );} + function rpmbuildlocal { nice rpmbuild --define "_topdir $PWD" --define "_builddir $PWD" --define "_rpmdir $PWD" --define "_sourcedir $PWD" --define "_specdir $PWD" --define "_srcrpmdir $PWD" --define "_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm" "$@"; } + function gdbn { gdb -nx --command=~/.gdbinit "$@"; } +' export IGNOREEOF=10 # '2>/dev/null' to prevent: TMOUT: readonly variable @@ -166,7 +165,12 @@ for file in $HOME/.bookmarks.html;do export WWW_HOME="file://$HOME/" [ -r $file ] && export WWW_HOME="file://$file" done -export GREP_OPTIONS="--binary-files=without-match --directories=skip --exclude=tags --exclude=TAGS --exclude=CVS" +export GREP_OPTIONS="--binary-files=without-match --directories=skip" +if echo x|GREP_OPTIONS="--exclude=y" grep -q x 2>/dev/null;then + export GREP_OPTIONS="$GREP_OPTIONS --exclude=tags --exclude=TAGS --exclude=CVS --exclude=ChangeLog*" + # FIXME: grep(1) ignores subdirectories for --exclude. + #export GREP_OPTIONS="$GREP_OPTIONS --exclude=testsuite --exclude=.pc --exclude=.svn" +fi if [ -n "$PS1" ];then # set only in interactive sessions export PS1='[bash]${LOGNAME}@${HOSTNAME}:${PWD}# ' export PS1='\[\017\]'"$PS1" # \017=std charmap @@ -194,8 +198,6 @@ _selfabs= [ -r "$_selfabs" ] || unset _selfabs [ -n "$_selfabs" ] && export VIMINIT="source `echo "$_selfabs"|sed 's/[.]bashrc$/.vimrc/'`" -###export SOCKS5_SERVER=icsocks.holland.sun.com - # Force English. unset LANG LANGUAGE `set|sed -n 's/^\(LC_[^=]*\)=.*$/\1/p'` export LANG=en_US.UTF-8 @@ -206,7 +208,7 @@ export LC_COLLATE=C # export LC_ALL=C # as it breaks Mutt "utf-8" and somehow it is no longer needed. -function wclines { awk '{x[$0]++}END{for (i in x) print x[i]"\t"i}'; }; export -f wclines +function wclines { awk '{x[$0]++}END{for (i in x) print x[i]"\t"i}'; } # SunOS does not support "-m" export ULIMITME_OPTS="" for i in "-m 100000" "-d 150000" "-v 200000";do @@ -214,26 +216,26 @@ for i in "-m 100000" "-d 150000" "-v 200000";do done # Prevent: ulimit: -m 100000 -d 150000 -v 200000: invalid number # by forcing our known $IFS value; eval(1) is needed to take $IFS to effect: -function ulimitme { IFS=" " eval "ulimit $ULIMITME_OPTS"; }; export -f ulimitme -function grep {(unset grep; ( ulimitme; grep "$@"; ); );}; export -f grep +function ulimitme { IFS=" " eval "ulimit $ULIMITME_OPTS"; } +function grep {(unset grep; ( ulimitme; grep "$@"; ); );} function finame { find . -false ` - awk ;'; }; export -f revlines + |ctags --file-tags -L - --langmap=Tcl:+.exp "$@" + fi; );} +function ctagsh { ctags "--c-types=+px"; } +function cpan {(unset cpan; if [ $# = 0 ];then cpan;else perl -MCPAN -e "install qw($*);";fi; );} +function exx { cd "`unset exx;exx "$@"|tee /proc/self/fd/2|tail -n1|sed -n 's/^extdir=//p'`"; } +function revlines { perl -e 'print reverse <>;'; } function debuginfo { if test -n "$*";then echo "$*";else cat;fi \ |xargs rpm -qf|xargs rpmquery --qf '%{SOURCERPM}\n'|sed 's/-[^-]*-[^-]*[.]src[.]rpm$/-debuginfo/'|sort -u; } function ipcsrmall { ipcs|awk '/- Shared Memory/{x="-m"}/- Semaphore/{x="-s"}/^0x/{print "ipcrm "x" "$2}'; } -function eog {(unset eog; touch /tmp/eog.$$;eog "$@" {,,,,,,,,,}/tmp/eog.$$;rm -f /tmp/eog.$$; );}; export -f eog -function diffc { diff -u "$@"|grep -v '^\(Only in \|Binary files\)'; }; export -f diffc -function diffi { diffc -X ~/.diffi.list "$@"; }; export -f diffi -function cvs {(unset cvs; +function eog {(unset eog; touch /tmp/eog.$$;eog "$@" {,,,,,,,,,}/tmp/eog.$$;rm -f /tmp/eog.$$; );} +function diffc { diff -u "$@"|grep -v '^\(Only in \|Binary files\)'; } +function diffi { diffc -X ~/.diffi.list "$@"; } +function cvs {(unset cvs local _opts _opts_d _now _line _o - if grep -iw '\(sources.redhat.com\|sourceware.org\):/cvs/src' CVS/Root &>/dev/null;then _opts_d="";else _opts_d="-d";fi + _opts_d="-d" + if grep -iw '\(sources.redhat.com\|sourceware.org\):/cvs/src' CVS/Root &>/dev/null;then _opts_d="";fi + if grep '^tests/kernel/syscalls/ptrace' CVS/Repository &>/dev/null;then _opts_d="";fi _now=false _line="" _opts="" @@ -270,12 +275,14 @@ function cvs {(unset cvs; break done cvs $_line $_opts "$@" - ); }; export -f cvs + ); } +function perlrpm { repoquery -q --whatprovides $(for i in "$@";do echo "perl($i)";done|sed -e 's/\//::/g' -e 's/[.]pm//g'); } ulimit -S -c 0 set +H shopt -s mailwarn unset OPTIND +umask 022 if [ -f "$HOME/.bashrc.local" ];then source "$HOME/.bashrc.local";fi @@ -288,12 +295,12 @@ for key in $HOME/.ssh/id_dsa;do agenteval=/tmp/.$USER.ssh-agent.eval if lockfile -1 -r 3 -l 10 -s 1 $agenteval.lock;then test -f $agenteval -a -O $agenteval -a -G $agenteval && - # ">/dev/null" to prevent: echo Agent pid 31074; + # ">/dev/null" to prevent: echo Agent pid 31074 source $agenteval >/dev/null if [ "ssh-agent" != "`(xargs -0 /dev/null `" ];then rm -f $agenteval (test ! -e $agenteval && ssh-agent -s >$agenteval) || echo >&2 'Failing ssh-agent!' - # ">/dev/null" to prevent: echo Agent pid 31074; + # ">/dev/null" to prevent: echo Agent pid 31074 source $agenteval >/dev/null fi rm -f $agenteval.lock