zshの環境設定を書いておく
bashだけど必読。
Linux: .bashrcと.bash_profileの違いを今度こそ理解する|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社
注意
zshenv内のパス設定は出来るだけ文字列だけにする。
どうしてもクォーテーションで囲みたい時は変数展開出来るダブルクォーテーション。
aliasはシングルクォーテーションのみ。コマンドとして出力する為。
.zshenv
#
# path_helper を呼び出していた /etc/profile を読み込まない設定
# setopt no_global_rcs
# ↑古い?
unsetopt GLOBAL_RCS
# export ZDOTDIR=$HOME/.zsh
# export HISTFILE=${HOME}/.zsh/.zsh_history
alias soz='source ~/.zshrc'
alias soze='source ~/.zshenv'
alias sopa='source ~/.path_file'
# initial PATH
# export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin"
export PATH="/opt/homebrew/sbin:$PATH"
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/opt/python@3.14/bin:$PATH"
export PATH="/opt/homebrew/opt/ruby@3.2/bin:$PATH"
export PATH="/opt/homebrew/opt/gettext/bin:$PATH"
# export PATH=~/perl5/bin:$PATH
# export PATH="/opt/homebrew/opt/zip/bin":$PATH
# export PATH=/usr/X11/bin:/usr/local/sbin:$PATH
# export PATH=/usr/local/stow/gettext/bin:$PATH
# export PATH=/usr/local/stow/openssl/bin:$PATH
# export PATH=/usr/local/stow/ruby/bin:$PATH # for execute gem
#
# MacPorts adding an appropriate PATH variable for use with MacPorts.
#export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.
#
# SSL_cert_pem
#
#export CONFIGURE_OPTS=--with-opt-dir=/usr/local/stow/openssl --with-readline-dir=/usr/local/stow/readline82 --enable-shared
# export SSL_CERT_FILE=/usr/local/stow/openssl/ssl/cert.pem
# export SSL_CERT_FILE=""
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
# export LD_LIBRARY_PATH=/usr/local/lib/pkgconfig:$LD_LIBRARY_PATH
export LDFLAGS="-L/usr/local/lib -L/usr/lib"
export LDFLAGS="-L/opt/homebrew/opt/zlib/lib $LDFLAGS"
export LDFLAGS="-L/opt/homebrew/lib $LDFLAGS"
export LDFLAGS="-L/opt/homebrew/opt/icu4c@76/lib $LDFLAGS"
export LDFLAGS="-L/opt/homebrew/opt/ruby@3.2/lib $LDFLAGS"
# export CPPFLAGS="/usr/include" # Linux Only
export SDKROOT="$(xcrun --show-sdk-path)" # Mac Only
export CPPFLAGS="-I${SDKROOT}/usr/include" # Mac Only
export CPPFLAGS="-I/usr/local/include $CPPFLAGS"
export CPPFLAGS="-I/opt/homebrew/opt/zlib/include $CPPFLAGS"
export CPPFLAGS="-I/opt/homebrew/include $CPPFLAGS"
export CPPFLAGS="-I/opt/homebrew/opt/icu4c@76/include $CPPFLAGS"
export CPPFLAGS="-I/opt/homebrew/opt/ruby@3.2/include $CPPFLAGS"
export CFLAGS="-Wall -O2" # 必要に応じて
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH="/opt/homebrew/opt/zlib/lib/pkgconfig":$PKG_CONFIG_PATH
export PKG_CONFIG_PATH="/opt/homebrew/lib/pkgconfig":$PKG_CONFIG_PATH
export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c@76/lib/pkgconfig":$PKG_CONFIG_PATH
export PKG_CONFIG_PATH="/opt/homebrew/opt/ruby@3.2/lib/pkgconfig":$PKG_CONFIG_PATH
#export PKG_CONFIG_PATH=/usr/local/stow/openssl/lib/pkgconfig:$PKG_CONFIG_PATH
export MANPATH=/usr/local/share/man:/usr/share/man
export MANPATH=/usr/local/share/man/man1:$MANPATH
# /etc/man.conf
# export LD_RUN_PATH=/usr/local/lib:$LD_RUN_PATH
#
# STOW settings
#
#LOCAL=${HOME}/gstow
#export LOCAL=/usr/local
#export PATH="$LOCAL/bin:$PATH"
#export LD_LIBRARY_PATH="$LOCAL/lib64:$LOCAL/lib:$LD_LIBRARY_PATH"
#export LDFLAGS="-L$LOCAL/lib64 -L$LOCAL/lib"
#export CPATH="$LOCAL/include:$CPATH"
#export PKG_CONFIG_PATH="$LOCAL/lib/pkgconfig:$PKG_CONFIG_PATH"
#export ACLOCAL_PATH="$LOCAL/share/aclocal"
#export MANPATH="$LOCAL/share/man:$MANPATH"
#export MANDATORY_MANPATH="$MANPATH:$MANDATORY_MANPATH" # for Busybox
#export INFOPATH="$LOCAL/share/info:$INFOPATH"
.zshrc
# Created by newuser for 5.9
# --------
# ZSH
# --------
# 補完機能
autoload -Uz compinit && compinit -i
# 選択中の候補を塗りつぶす
zstyle ':completion:*' menu select
# home brew install zsh-completions
# To activate these completions, add the following to your .zshrc:
#
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi
#
# zsh IFSをbashと同一に
setopt SH_WORD_SPLIT
# --------
# ZSH history
# --------
# alias hi='history -50000'
alias hi='history '
# 履歴ファイルの保存先
export HISTFILE=${HOME}/.zsh_history
# メモリに保存される履歴の件数
export HISTSIZE=10000
# 履歴ファイルに保存される履歴の件数
export SAVEHIST=100000
# 重複を記録しない
setopt hist_ignore_dups
# 開始と終了を記録
setopt EXTENDED_HISTORY
# --------
# ZSH prompt
# --------
# PROMPT='%m:%F{green}%c%f %n%# '
PROMPT='%F{yellow}%c%f $ '
# --------
# ZSH path
# --------
# zsh 専用コード
# 重複するパスの除去は zsh では typeset -U を使うだけで簡単に実現できます。typeset -U は重複値を除くための属性で、配列または : 区切りを使う PATH などの変数に付けることがでます。
# PATH='/usr/bin:/bin:/usr/bin:/bin:/usr/bin:/bin'
# typeset -U path PATH
# echo "$PATH" # => /bin:/usr/bin
# 上記のコードは path 配列と PATH 環境変数の 2 つに属性を付けています。zsh では path 配列は PATH 環境変数と紐づいており : で区切られた値が path 配列に反映されます。その逆もしかりですが、path と PATH のどちらから代入しても重複値を省くために両方に属性を付けています。
typeset -U path PATH
# ------
# ZSH Ctrl+Dでログアウトを防ぐ
# ------
setopt ignoreeof
# bash互換: IGNOREEOF 環境変数で制御
: "${IGNOREEOF:=20}" # デフォルト20回、未設定なら20
ZSH_EOF_COUNT=0
# Ctrl+D 用ウィジェット
_zsh_ignoreeof_widget() {
ZSH_EOF_COUNT=$((ZSH_EOF_COUNT + 1))
local remaining=$((IGNOREEOF - ZSH_EOF_COUNT))
if (( remaining <= 0 )); then
# 上限に達したら終了
zle -M "EOF limit reached (${ZSH_EOF_COUNT}/${IGNOREEOF}). Logging out..."
exit
else
# 上限未満ならメッセージ表示
zle -M "Use 'exit' or press Ctrl+D ${remaining} more time(s) to exit."
return 0
fi
}
# ウィジェット登録とキー割り当て
zle -N _zsh_ignoreeof_widget
bindkey '^D' _zsh_ignoreeof_widget
# https://github.com/zsh-users/zsh-syntax-highlighting/issues/377
# ctrl-d() { zle -M "zsh: use 'exit' to exit."; return 1 }
# zle -N ctrl-d
# bindkey '^D' ctrl-d
# ------
# BASH ZSH 共通
# ------
if [ -f $HOME/.bashrc ]; then
source $HOME/.bashrc
else
echo "共通設定ファイルが存在しません"
fi
PERL5LIB="/Users/$HOME/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL_LOCAL_LIB_ROOT="/Users/$HOME/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/Users/$HOME/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/Users/$HOME/perl5"; export PERL_MM_OPT;
ShellScriptのダブルクォートとシングルクォートの違い - ぴよぴよ.py