ユーザ用ツール

サイト用ツール


zsh

zsh

MacOSXでログインシェルをzshに変える

  1. システム環境設定
  2. ユーザとグループ
  3. 対象ユーザを右クリック
  4. 詳細オプションを選択
  5. ログインシェルを/bin/zshに変更する

homebrewのzsh補完を有効にする

.zshrcに追加

fpath=($(brew --prefix)/share/zsh/site-functions $fpath)
autoload -U compinit
compinit 

以下のコマンドを実行

ln -s $(brew --prefix)/Library/Contributions/brew_zsh_completion.zsh $(brew --prefix)/share/zsh/site-functions/_brew

zsh起動時にエラーが出る場合

zsh compinit: insecure directories, run compaudit for list.

このようなエラーが出る場合はcompauditと打って調べる

~ i$ compaudit
There are insecure directories:
/usr/local/share/zsh/site-functions
/usr/local/share/zsh

表示されるディレクトリの権限を755に修正する。

npmのzsh補完を有効にする

.zshrcに追加

if [ ! -f ~/.npm_completion ]; then
  npm completion > ~/.npm_completion
fi
source ~/.npm_completion

bashとの違い

変数でのスペースの扱い

bashではスペースを含むと別単語として展開される。““で囲むとひと塊りの文字列として展開される

$ w="echo hoge"
$ $w
hoge fuga
$ "$w"
echo hoge fuga: command not found

zshではスペースを含んでいてもひと塊りの文字列として展開される

$ w="echo hoge fuga"
$ $w
zsh: command not found: echo hoge fuga

変数のみで配列全体を表現

bash

$ A=(a b c)
$ echo $A
a
$ echo ${A[@]}
a b c

zsh

$ A=(a b c)
$ echo $A
a b c

セパレータを変更できる。IFSの変更が不要

$ A=(a b c)
$ echo ${(j/,/)A}
a,b,c
zsh.txt · 最終更新: 2020/07/20 11:29 by nullpon