わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

.zshrcのmacOSターミナル対応

 昨年の秋に,MacBook Airを購入し,きれいな画面を見ながら,macOS専用アプリの起動や,ターミナルを介したコマンドを行っていました.
 お盆休みに,コマンドライン周辺を見直しました.
 シェルはzshです.そこで,WSL2やLinuxで使用している.zshrcなどのファイルを,そのまま転送してみたところ,いくつか不具合が出ました.
 まずはmacOSのターミナルに限定した処理を記述できるようにします.vim .zshrcを実行して中身を見たときのARCHIの記述は,利用可能なドライブレターを,zshのfunctionでのコードと同一でした.いったんvimを終了して,name -srを実行すると,出力は「Darwin 数.数」でした.
 ということで,macOSのターミナルでzshを起動したときには,ARCHIの値はdarwinにしましょう.場合分けの処理は以下のようになりました.

if [ -f $ZDOTDIR/.archi.linux ]; then export ARCHI="linux"
elif [ -f $ZDOTDIR/.archi.wsl ]; then export ARCHI="wsl"
elif [ -f $ZDOTDIR/.archi.cygwin ]; then export ARCHI="cygwin"
elif [ -f $ZDOTDIR/.archi.darwin ]; then export ARCHI="darwin"
elif [ -f $ZDOTDIR/.archi.dummy ]; then export ARCHI="dummy"
elif which uname >& /dev/null; then
    case "`uname -sr`" in
        Linux*icrosoft*); export ARCHI="wsl" ; touch $ZDOTDIR/.archi.$ARCHI ;;
        Linux*);  export ARCHI="linux"  ; touch $ZDOTDIR/.archi.$ARCHI ;;
        CYGWIN*); export ARCHI="cygwin" ; touch $ZDOTDIR/.archi.$ARCHI ;;
        Darwin*); export ARCHI="darwin" ; touch $ZDOTDIR/.archi.$ARCHI ;;
        *);       export ARCHI="dummy"  ; touch $ZDOTDIR/.archi.$ARCHI ;;
    esac
else
    export ARCHI="dummy"
fi

 .zshrc.darwinの記述は以下の通りとしました.Homebrewコマンドラインからインストール済みで,brew install rubyを実行したときに「brewをすべて左手の指で打つには面倒だなあ」と思い,aliasを設定しました.

if [ -d /opt/homebrew/bin ]
then
  PATH="/opt/homebrew/bin:$PATH"
  alias b="brew"
  alias bi="brew install"
  [ -d /opt/homebrew/opt/ruby/bin ] && PATH="/opt/homebrew/opt/ruby/bin:$PATH"
fi
alias sx="screen -xR"

 次に,lsを実行したときに,何やらエラーメッセージが表示されました.これは,.zshrcに

alias ls='ls -aFl --color --show-control-chars'

と書いていたのが原因で,--show-control-charsオプションを取り除いて保存し,zshを起動し直すことで,解消しました.
 他にも細かな修正を行い,macOSのターミナルで何度もzshを起動して動作確認をしたあと,Dropboxを介してファイルをWSL2環境にコピーし,再度修正して確定としました.お盆休みの,よいひとときとなりました.