zshの環境設定を書いておく
bashだけど必読。
Linux: .bashrcと.bash_profileの違いを今度こそ理解する|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社
注意
zshenv内のパス設定は出来るだけ文字列だけにする。
どうしてもクォーテーションで囲みたい時は変数展開出来るダブルクォーテーション。
aliasはシングルクォーテーションのみ。コマンドとして出力する為。
.zshenv
export ZDOTDIR=$HOME/.zsh
export HISTFILE=${HOME}/.zsh/.zsh_history
export LD_LIBRARY_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/usr/lib
#unset DYLD_LIBRARY_PATH
export LDFLAGS=-L/usr/local/lib
export LDFLAGS=-L/usr/local/stow/gettext-021/lib:$LDFLAGS
export LDFLAGS=-L/usr/local/stow/gettext-021/lib/gettext:$LDFLAGS
export CPPFLAGS=-I/usr/local/include
export CPPFLAGS=-I/usr/local/stow/gettext-021/include:$CPPFLAGS
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH=/usr/local/stow/openssl/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:~/bin
export PATH=/usr/local/stow/gettext-021/bin:$PATH
export PATH=/usr/local/stow/ruby/bin:$PATH # for execute gem
## export PATH=/usr/X11/bin:/usr/local/sbin:$PATH
#export CONFIGURE_OPTS=--with-opt-dir=/usr/local/stow/openssl --with-readline-dir=/usr/local/stow/readline --enable-shared
#export SSL_CERT_FILE=/usr/local/stow/openssl/ssl/cert.pem
export MANPATH=/usr/local/share/man:/usr/share/man
#export MANPATH=/usr/share/man/ja_JP.UTF-8:$MANPATH
# /etc/man.conf
# export LD_RUN_PATH=/usr/local/lib:$LD_RUN_PATH
.zshrc
# Created by newuser for 5.9
# --------
# ZSH
# --------
# ZSH Ctrl+Dでログアウトしてしまうことを防ぐ
setopt IGNOREEOF
# 補完機能
#autoload -Uz compinit
#compinit
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'
# 履歴ファイルの保存先
export HISTFILE=${HOME}/.zsh_history
# メモリに保存される履歴の件数
export HISTSIZE=10000
# 履歴ファイルに保存される履歴の件数
export SAVEHIST=100000
# 重複を記録しない
setopt hist_ignore_dups
# 開始と終了を記録
setopt EXTENDED_HISTORY
# --------
# ZSH prompt
# --------
# promptinitを使う場合はこちらを読み込む
# 利用可能なpromptの設定を見る
# $ prompt -l
# promptを設定する
# $ prompt [prompt名]
# promptを独自で変更
# PROMPT='%m:%F{green}%c%f %n%# '
PROMPT='%F{yellow}%c%f $ '
# Linux
# PROMPT='%F{cyan}%n@%m %F{green}%~ %F{yellow}$ %f'
# --------
# ZSH prompt
# --------
# 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
# --------
# BASH ZSH 共通
# --------
umask 027
# ------
# EXPORT
# ------
export TZ=JST-9
export LC_TIME=ja_JP.UTF-8 #日時形式
# alias date='LC_TIME=C.UTF-8 date'
# alias date='LC_TIME=ja_JP.UTF-8 date'
# date '+%Y/%m/%d (%a)'
#
export LANG=ja_JP.UTF-8
export LC_ALL=C
#export LC_ALL=ja_JP.UTF-8
#export MAKEFLAGS=-j4 $MAKEFLAGS
export MAKEFLAGS=-j4
# ------
# # LANG=C
# ------
#export LANG=C
#export LC_ALL=C
# export LC_MESSAGES=ja_JP.UTF-8 #メッセージの言語
# export LC_CTYPE=ja_JP.UTF-8
# export OUTPUT_CHARSET=UTF-8
# NG? export OUTPUT_CHARSET=ja_JP.UTF-8
# export LDFLAGS='-L/usr/local/lib'
# export TERM='xterm-256color'
#
# ------
# vim neovim
# ------
if [ -f /usr/local/bin/vim ]; then
alias vi=/usr/local/bin/vim
alias vim=/usr/local/bin/vim
export EDITOR=/usr/local/bin/vim
elif [ -f /usr/bin/vim ]; then
alias vi=/usr/bin/vim
export EDITOR=/usr/bin/vim
fi
# --------
# less more
# --------
#export PAGER=lv
export PAGER='less -R'
# export LESS='-r'
# 最低限でもこれくらいは設定
# export LESS='-i -M -R'
# 全部付けてます(-L 以外)
export LESS='-g -i -M -R -S -W -z-4 -x4'
export LESSCHARSET=UTF-8
# export LESSCHARSET=
#Source-hilight with less
# export LESSOPEN='| /usr/local/bin/src-hilite-lesspipe.sh %s'
# export LESS='--RAW-CONTROL-CHARS'
# alias more='more -r'
# alias more='more -R'
# ------
# Linux
# ls --color
# ls --color=auto
# alias ls='ls -Fh' #--show-control-chars' linux
# ------
# ------
# ls color
# ------
# Mac
# export LSCOLORS='exfxcxdxbxegedabagacad' #デフォルト
export LSCOLORS='gxfxcxdxbxegedabagacad'
# ------
# ALIAS
# ------
alias stow="stow --ignore='dir|gschemas.compiled|icon-theme.cache'"
alias ls='ls -Gh' #h is show-control-chars. G is color. #Mac
alias lsg='ls -gh' #g is userID hiding #Mac
alias lo='ls -lo'
alias loa='ls -loa'
alias ll='ls -l'
alias llm='ls -l | more'
alias la='ls -la'
alias lam='ls -la | more'
alias lo='ls -lo'
alias loa='ls -loa'
alias lt='ls -lt'
alias ltr='ls -ltr'
alias ltra='ls -ltra'
alias lraT='ls -lraT'
alias cp='cp -iv'
alias rm='rm -iv'
alias mv='mv -iv'
alias clr=clear
alias lv='lv -Ia -Ou8'
#
alias soz='source ~/.zshrc'
# alias soz='source ~/.zsh/.zshrc'
alias soze='source ~/.zshenv'
alias ress="rename -v -X -S ' ' _ -S - '' -S . '' ~/Desktop/スク*.*"
#alias ress="rename -v -X -S ' ' _ -S - '' -S . '' ~/Desktop/Screen*.png"
#alias ress="rename -v -X -s スクリーンショット SS -S ' ' _ -S - '' -S . '' スク*.*"
# --------
# find grep
# --------
alias grep='/usr/bin/grep --color=always '
#alias grep_ca='/usr/bin/grep --color=always '
alias grep_cn='/usr/bin/grep --color=never '
# (ex ggrep -r 日本語 */* | less -R
alias ggrep='ggrep --color=always '
alias gegrep='gegrep --color=always '
# NG alias ggrep='ggrep --color=auto '
# NG alias grep='/usr/bin/grep --color=auto '
alias figr='~/bin/figr.sh'
alias fna='~/bin/fna.sh'
# gfind . -name "*.cc" | xargs grep "hoge" -n
# 関数でbash/zshどちらでも可
# function fna() {
# sh -c 'find . -name "$1" -type f -print' -- "$1"
# }
# function figr() {
# sh -c 'find . -name "*$1*" -type f -print0 | xargs -0 grep --color -Hn "$2"' -- "$1" "$2"
# }
# findを使ったファイル内検索を強くしてみた
# https://qiita.com/naotoh0811/items/be96b1c0be08f049ba91
# Mac
function ff_orig(){
# 正規表現による条件指定で、拡張子が.ccまたは.hであるファイルについて検索
find -E . -type f -regex ".*\.(rb|py)" | xargs grep "$1" -n | nl | grep $1
}
function ff(){
# 第一引数:検索ワード
# 第二引数:エディタ(=vim)で開きたいファイルのindex
if [ $# -eq 1 ]; then
ff_orig "$1"
elif [ $# -eq 2 ]; then
vim `ff_orig "$1" | sed -n $2p | cut -f 2 | cut -d: -f 1`
else
echo "error"
fi
}
# GNU find # Findutils
function fid_reg(){
# GNU find
gfind . -type f -regextype posix-egrep -regex ".*\.(rb|py)" | xargs grep "$1" -n | nl | grep $1
}
function fid(){
if [ $# -eq 1 ]; then
fid_reg "$1"
elif [ $# -eq 2 ]; then
vim `fid_reg "$1" | sed -n $2p | cut -f 2 | cut -d: -f 1`
else
echo "error"
fi
}
# https://www.rasukarusan.com/entry/2019/04/30/000000
function func() {
unalias grep
local func=$(
typeset -f \
| grep ".*() {$" \
| grep "^[a-z_]" \
| tr -d "() {" \
| fzf --height 100% --preview "source ~/.zshrc; typeset -f {}"
)
if [ -z "$func" ]; then
return
fi
typeset -f $func
}
# Mac
alias psaeo='ps -aeo user,pid,lstart,tty,time,comm'
#alias psaeo='ps -aeo user,pid,ppid,lstart,tty,time,comm'
# Linux
# ps -eo user,pid,ppid,c,lstart,tty,time,cmd
# ------
# macのターミナルから、同じディレクトリで新規ターミナルを開く
# open -a Terminal .
# macの iterm2 から、同じディレクトリで新規ターミナルを開く
alias newt=' open -a /Applications/iTerm.app .'
# ------
# ------
# atool 圧縮:atool <Archive>.<拡張子> -a <Filename1> <Filename2>
# ------
alias unat='atool -x '
alias lsat='atool -l '
# ------
# MACINTOSH
# CD TRAY
# ------
alias tra_close='drutil -drive 1 tray close'
alias tra_eject='drutil eject'
alias tra_open='drutil -drive 1 tray open'
# ------
# MAN
# ------
# alias man='LANG=ja_JP.UTF-8 man -C $HOME/.man/man.conf'
alias man='LANG=ja_JP.UTF-8 man -C /etc/man.conf'
#alias man='LANG=ja_JP.UTF-8 /usr/bin/man'
alias eman='env LANG=C /usr/bin/man'
#alias man='LANG=ja_JP.UTF-8 /usr/local/jman/bin/man'
#alias eman='env LANG=C /opt/local/bin/man'
ShellScriptのダブルクォートとシングルクォートの違い - ぴよぴよ.py