スキップしてメイン コンテンツに移動

投稿

ラベル(shell)が付いた投稿を表示しています

zshの構成: ファイル構成

  zshはsh用のスクリプトに上位互換である.このため,私は次に述べる方針で設定ファイルを記述している.すなわち,基本的な設定はshのものを使用し,zsh特有の設定ファイルを別に設ける.これにより,shとzshの設定を限りなく近づけることができる.   私のzshの設定ファイルの構成を以下に示す. alias.sh: エイリアスを設定する. env.sh: 環境変数を設定する. misc.sh: その他の設定をおこなう. misc.zsh: zsh特有の設定をおこなう.   ディレクトリ構成は次のようにしている. ~/ lib/ conf/ shell/ sh/ dot.profile alias.sh env.sh misc.sh ~/ lib/ conf/ shell/ zsh/ misc.zsh

shの設定: ファイル構成

  私のshの設定ファイルの構成を以下に示す. alias.sh: エイリアスを設定する. env.sh: 環境変数を設定する. misc.sh: その他の設定をおこなう.   ディレクトリ構成は次のようにしている. ~/ lib/ conf/ shell/ sh/ dot.profile alias.sh env.sh misc.sh

zshの設定: dot.zshrc

dot.zshrc   zshの起動時に読み込まれるスクリプトである. #!/bin/zsh os_rev=`uname` source ${HOME}/lib/conf/shell/sh/alias.sh source ${HOME}/lib/conf/shell/sh/env.sh source ${HOME}/lib/conf/shell/sh/misc.sh source ${HOME}/lib/conf/shell/zsh/misc.zsh os_rev=   多くはshの設定ファイルを利用できる.shとは異なる設定は,全てmisc.zshに記述している.

zshの設定: misc.zsh

misc.zsh   shに無い,zsh特有の設定について記述している.   以下の,全ての「^[」は,手動でコントロールシーケンスに書き換えて利用すること.emacsであれば,"C-qC-["と入力すればよい. #!/bin/zsh # history search bindkey ^P history-search-backward bindkey ^N history-search-forward # emacs keybind bindkey -e case ${UID} in 0) PROMPT="%B%{^[[31m%}[%n@%m]#%{^[[m%}%b " RPROMPT="%B%{^[[31m%}[%~]%{^[[m%}%b" PROMPT2="%B%{^[[31m%}%_#%{^[[m%}%b " SPROMPT="%B%{^[[31m%}%r is correct? [n,y,a,e]:%{^[[m%}%b " # [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && # PROMPT="%{^[[36m%}${HOST%%.*}:${PROMPT}" ;; *) PROMPT="%{^[[36m%}%n@%m%%%{^[[m%} " RPROMPT="%{^[[36m%}[%~]%{^[[m%}" PROMPT2="%{^[[36m%}%_> %{^[[m%} " SPROMPT="%{^[[36m%}%r is correct? [n,y,a,e]:%{^[[m%} " # [ -n "${REMOTEHOST}${SSH_CONNECTION}" ] && # PROMPT="%{^[[36m%}${HOST%%.*}:${PROMPT}" ;; esac setopt auto_pushd seto...

shの設定: misc.sh

misc.sh   その他,細々したことを設定する. #!/bin/sh umask 022 if which dircolors 2>&1 1>/dev/null; then eval `dircolors ~/lib/conf/misc/dot.dir_colors -c` fi PS1="\[\033[36m\]\u:\w \$ \[\033[0m\]" case $os_rev in "Linux") limit coredumpsize 0 ;; "SunOS") ;; "FreeBSD") if [ -n ${DISPLAY} ]; then kbdcontrol -b off fi ;; "CYGWIN*") cd ${HOME} ;; *) ;; esac umask   新規にファイルを作成する際の,パーミッションにかけるマスクを設定する. dircolors   lsコマンドで表示する各ファイルの色を指定するために利用する.実際には,evalによって,環境変数LS_DIRCOLORSを設定する. PS1   プロンプトで表示する内容を指定する.

shの設定: env.sh

env.sh   環境変数を設定する. #!/bin/sh export EDITOR=vi export SVN_EDITOR=vi if [ -z ${DISPLAY} ]; then export LANG=C fi export EMACS_IME="anthy-el" export PATH='' export PATH=${HOME}/lib/bin:$PATH export PATH=${HOME}/local/bin:$PATH export PATH=${HOME}/local/usr/bin:$PATH export PATH=/usr/local/bin:$PATH export PATH=/usr/bin:$PATH export PATH=/usr/sbin:$PATH export PATH=/bin/:$PATH export PATH=/sbin:$PATH case $os_rev in "Darwin") export PATH=/opt/local/bin:/opt/local/sbin:$PATH export DISPLAY=:0.0 ;; esac export MANPATH=${MANPATH}:${HOME}/local/man/

shの設定: dot.profile

dot.profile   /bin/shの起動時に,初期化するために呼ばれるスクリプト. #!/bin/sh chsh() { search_dir='/bin /usr/bin /usr/local/bin' search_shell='zsh tcsh bash' for shell in $search_shell; do for dir in $search_dir; do path=$dir/$shell if [ -x $path ]; then SHELL=$path echo $SHELL exec $SHELL fi done done } chsh os_rev=`uname` source ${HOME}/lib/conf/shell/sh/alias.sh source ${HOME}/lib/conf/shell/sh/env.sh source ${HOME}/lib/conf/shell/sh/misc.sh os_rev= シェルの変更   私はzshを使う人なので,zshがあればexec zshしてシェルを変更する.では,どうせシェルを変えるのならば,何故chshして予めzshを使うよう指定しないのか.これは,マシンに新規にOSをインストールする際に,通常はzshがデフォルトで入らないことによる.このため,あらゆるディストリビューションに必ず入っている/bin/shをデフォルトで使用し,もしzshがインストールされていればこれに乗り換える,という策を講じている.

shの設定: alias.sh

alias.sh   ビルトインコマンドaliasを使ったエイリアスの設定をおこなう. #!/bin/sh case $os_rev in "Linux") alias ls='ls -F --color=auto' ;; "SunOS") ;; "FreeBSD") alias ls='gnuls -F --color=auto' alias l='ls -la' ;; "Darwin") alias ls='ls -FwG' alias emacs='/usr/local/Emacs.app/Contents/MacOS/Emacs' ;; "CYGWIN*") alias emacs='/usr/local/emacs/22.2/bin/emacs' alias ls='ls -F --color=auto' ;; *) ;; esac alias rm='rm -f' alias xssh='ssh -X' alias less='less -X' alias l='ls -la'