bash は login により、ログインシェルとして起動されます。起動された bash は、/etc/profile、‾/.profile の順でそれぞれの内容を実行します。
# Set the values for some environment variables: export MINICOM="-c on" export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man export HOSTNAME="`cat /etc/HOSTNAME`" export LESSOPEN="|lesspipe.sh %s" export LESS="-M" |
環境変数を設定します。
# If the user doesn't have a .inputrc, use the one in /etc. if [ ! -r "$HOME/.inputrc" ]; then export INPUTRC=/etc/inputrc fi |
ホームディレクトリ内の .inputrc が読み込み可能でない場合は、環境変数 INPUTRC を /etc/inputrc と設定します。
# Set the default system $PATH: PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games" |
シェル変数 PATH を設定します。
# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in # the $PATH. Some means of connection don't add these by default (sshd comes # to mind). if [ "`id -u`" = "0" ]; then echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null if [ ! $? = 0 ]; then PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH fi fi |
root であれば、シェル変数 PATH を調べます。/usr/local/sbin が含まれていなければ、/usr/local/sbin:/usr/sbin:/sbin を追加します。
# I had problems using 'eval tset' instead of 'TERM=', but you might want to # try it anyway. I think with the right /etc/termcap it would work great. # eval `tset -sQ "$TERM"` if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then TERM=linux fi |
シェル変数 TERM が設定されていない、あるいは unknown であれば、TERM を linux と設定します。
# Set default POSIX locale: export LC_ALL=POSIX |
環境変数 LC_ALL を POSIX と設定します。
# Set ksh93 visual editing mode: if [ "$SHELL" = "/bin/ksh" ]; then VISUAL=emacs # VISUAL=gmacs # VISUAL=vi fi |
シェル変数 SHELL が /bin/ksh であれば、シェル変数 VISUAL を emacs と設定します。
# Set a default shell prompt: #PS1='`hostname`:`pwd`# ' if [ "$SHELL" = "/bin/pdksh" ]; then PS1='! $ ' elif [ "$SHELL" = "/bin/ksh" ]; then PS1='! ${PWD/#$HOME/‾}$ ' elif [ "$SHELL" = "/bin/zsh" ]; then PS1='%n@%m:%‾%# ' elif [ "$SHELL" = "/bin/ash" ]; then PS1='$ ' else PS1='¥u@¥h:¥w¥$ ' fi |
シェル変数 SHELL に応じて シェル変数 PS1 を設定します。
シェル変数 SHELL の値 | シェル変数 PS1 の値 |
---|---|
/bin/pdksh | ! $ |
/bin/ksh | ! ${PWD/#$HOME/‾}$ |
/bin/zsh | %n@%m:%‾%# |
/bin/ash | $ |
上記以外 | ¥u@¥h:¥w¥$ |
これは、コマンドプロンプトの設定です。
PS2='> ' |
シェル変数 PS2 を > と設定します。これは、行継続プロンプトの設定です。
export PATH DISPLAY LESS TERM PS1 PS2 |
シェル変数 PATH、DISPLAY、LESS、TERM、PS1、PS2 を環境変数とします。
# Default umask. A umask of 022 prevents new files from being created group # and world writable. umask 022 |
umask を 022 に設定します。
# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls: if [ "$SHELL" = "/bin/zsh" ]; then eval `dircolors -z` elif [ "$SHELL" = "/bin/ash" ]; then eval `dircolors -s` else eval `dircolors -b` fi |
環境変数 SHELL が /bin/zsh であれば、dircolors -z の出力を実行します。同様に、環境変数 SHELL が /bin/ash であれば、dircolors -s の出力を実行します。環境変数 SHELL がそれら以外であれば、dircolors -b の出力を実行します。例として、dircolors -b の出力を解説します。
bash$ dircolors -b LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33; 01:or=40;31;01:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01 ;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.bz 2=01;31:*.rpm=01;31:*.deb=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.jpg=01;35:*.gif =01;35:*.bmp=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:* .mpg=01;37:*.avi=01;37:*.mov=01;37:'; export LS_COLORS; LS_OPTIONS=' --color=auto -F -b -T 0'; export LS_OPTIONS; alias ls='/bin/ls $LS_OPTIONS'; alias dir='/bin/ls $LS_OPTIONS --format=vertical'; alias vdir='/bin/ls $LS_OPTIONS --format=long'; alias d=dir; alias v=vdir; |
環境変数 LS_COLORS を設定します。これは、ls のカラー表示の設定です。次に、環境変数 LS_OPTIONS を --color=auto -F -b -T 0 と設定します。さらに、エイリアスの設定をします。
エイリアス | 値 |
---|---|
ls | /bin/ls $LS_OPTIONS |
dir | /bin/ls $LS_OPTIONS --format=vertical |
vdir | /bin/ls $LS_OPTIONS --format=long |
d | dir |
v | vdir |
dircolors の設定ファイルは /etc/DIR_COLORS です。
# Notify user of incoming mail. This can be overridden in the user's # local startup file (‾/.bash.login or whatever, depending on the shell) if [ -x /usr/bin/biff ]; then biff y fi |
/usr/bin/biff が実行可能であれば、biff y を実行します。
# Append any additional sh scripts found in /etc/profile.d/: for file in /etc/profile.d/*.sh ; do if [ -x $file ]; then . $file fi done |
/etc/profile.d/ 内にある拡張子 sh のファイルをすべて調べます。実行可能であれば、それを実行します。
# For non-root users, add the current directory to the search path: if [ ! "`id -u`" = "0" ]; then PATH="$PATH:." fi |
root ユーザでない場合は、シェル変数 PATH に . を追加します。
そして、bash はコマンドプロンプトを表示します。
tomoaki@darkstar:‾$ _ |
参考文献
前へ | 起動プロセス入門 | 次へ |