Hatena::Grouplinux2

Going My Linux Way このページをアンテナに追加 RSSフィード

2012年01月22日(日)

bash プロファイル

15:22 | bash プロファイル - Going My Linux Way を含むブックマーク はてなブックマーク - bash プロファイル - Going My Linux Way bash プロファイル - Going My Linux Way のブックマークコメント

$HOME/.bashrc に bash のカスタマイズ設定を記述すると反映されます。

ですが、直接記述では何かと不都合です。

なので、以下のようにしてます。

---

以下を $HOME/.bashrc 末尾の追加します。

# loading user profile
. $HOME/etc/profile.d/Load

そして、実際の設定は $HOME/etc/profile.d/Load に記述します。

$HOME/etc/profile.d/Load は以下のように記述してます。

#
# Add the following descriptions to the '.bashrc'.
# --------------------------------------
#
#   . $HOME/etc/profile.d/Load
#
# --------------------------------------
#

cd $HOME/etc/profile.d/

#---------------------------------------------------------
# variables (paths)
#---------------------------------------------------------
PATH0=$HOME/bin:$PATH:/sbin:/usr/sbin
MANPATH0=$HOME/lib/man:$MANPATH
LD_LIBRARY_PATH0=$HOME/lib/lib:$LD_LIBRARY_PATH
export PATH0 MANPATH0 LD_LIBRARY_PATH0

PATH=$PATH0
MANPATH=$MANPATH0
LD_LIBRARY_PATH=$LD_LIBRARY_PATH0
export PATH MANPATH LD_LIBRARY_PATH

CDPATH0=.
CDPATH0=$CDPATH0:$HOME
CDPATH0=$CDPATH0:$HOME/sandbox
CDPATH0=$CDPATH0:$HOME/work
CDPATH0=$CDPATH0:$HOME/lib
CDPATH0=$CDPATH0:$HOME/public_html
CDPATH0=$CDPATH0:$HOME/var
CDPATH0=$CDPATH0:$HOME/etc
CDPATH0=$CDPATH0:/media
export CDPATH0

CDPATH=$CDPATH0

#---------------------------------------------------------
# variables
#---------------------------------------------------------
EDITOR=vi
VISUAL=${EDITOR:-vi}
MAIL=/var/spool/mail/$LOGNAME
export EDITOR VISUAL MAIL

GREP_OPTIONS='--color=auto'
export GREP_OPTIONS

#---------------------------------------------------------
# aliases
#---------------------------------------------------------
alias a=alias
##alias b=
alias c=clear
alias d="date '+%Y/%m/%d %H:%M:%S'"
alias e=egrep
alias f=find
alias g=grep
alias h=history
alias i='ifconfig -a'
alias j=jobs
##alias k=
alias l=locate
alias m=man
alias n='netstat -tua'
alias o='od -A x -t x1z'
alias p='ps aux'
##alias q=
alias r=route
alias s=sudo
##alias t=
alias u='uname -a'
alias v=view
####w= # ** NEVER USE **
####x=
##alias z=

alias ls='ls -FC --color=auto'
alias ls.='ls -a'
alias ls1='ls -1'
alias lsd='ls -d'
alias rm='rm -i'
alias mv='mv -i'
alias du='du -sk'
alias mkdir='mkdir -p'

alias pd='pushd'
alias ud='popd'
alias ds='dirs'

#---------------------------------------------------------
# aliases (sudo)
#---------------------------------------------------------
profile=sudo.aliases

if [ -f "$profile" ] && which sudo >/dev/null 2>&1
then
    while read alt cmd args
    do
        alias $alt="sudo ${cmd:-$alt} $args"
    done <"$profile"
fi

unset profile cmd args

#---------------------------------------------------------
# load profile
#---------------------------------------------------------
for profile in shell.`basename "$SHELL"` enable?/*
do
    [ -f "$profile" ] && . "$profile"
done
unset profile

#---------------------------------------------------------
# go home
#---------------------------------------------------------
cd $HOME

$HOME/etc/profile.d/Load から参照している sudo.alias、shell.bash は以下です。

sudo.alias (一部のみ)。ここでは sudo して使うコマンドを記述しています。

例えば、ここに記述されている mount は 'sudo mount' にエイリアスされます。

visudo
vigr
eject
mount
umount
mkfs
mke2fs
mkfs.ext2
mkfs.ext3
mkfs.ext4
mkfs.ext4dev
mkfs.ntfs
mkfs.vfat
mkfs.msdos
mount.dvd   mount -t udf -ro loop
mount.cdrom mount -t iso9660 -ro loop
mount.loop  mount -o loop
fsck
e2fsck
  :

shell.bash。ここでは bash 固有の設定を記述しています。

set -o vi

PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\$ "

function fcount {
    ls -1 $* | wc -l
}

$HOME/etc/profile.d/Load には enable0、enable1、enable2 のディレクトリがあります。それぞれにコマンド毎の設定ファイルを入れます。

enable* の末尾の数字にあまり意味はありません。数字の若いディレクトリの設定を先に読み込ませるためにあるものです。

例えば、enable1/ruby では ruby で使う環境変数などを設定しています。

[ -d $HOME/lib/ruby/lib ] || mkdir -p $HOME/lib/ruby/lib/
[ -d $HOME/lib/ruby/bin ] || mkdir -p $HOME/lib/ruby/bin/

export RUBYOPT=-rubygems
export RUBYLIB=$HOME/lib/ruby/lib
export RUBYPATH=$HOME/lib/ruby/bin

for pack in gmrw-ssh2-server    \
            pyxparser
do
    export RUBYLIB=$RUBYLIB:$HOME/lib/ruby/$pack/lib
    export RUBYPATH=$RUBYPATH:$HOME/lib/ruby/$pack/bin
done

例えば、enable1/tree では tree コマンドが導入されてない場合の代替関数を定義しています。

if ! which tree >/dev/null 2>&1
then
    function tree
    {
        cd ${1:-.}
        pwd ; find . -print | sed '1d;s,[^/]*/,|    ,g;s/..//;s/[^ ]*$/|--- &/'
        cd -
    }
fi

alias t=tree

例えば、enable1/lv では、単に環境変数を設定しているだけです。

export PAGER="lv -c"

alias lv='lv -c'
トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120122