53
50

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zshのオプション設定の分かりにくいところまとめ

Last updated at Posted at 2015-07-12

zshには「オプション」というものがある。オプションとは、zshの動作を切り替えるためのオン/オフのフラグのこと。zshを使ってる人は何かしらオプションを設定して、使いやすいようにカスタマイズしてると思う。このオプションを設定したり、設定した値を確認する方法がちょっと分かりにくいので、ここでまとめておく。

オプションを有効にする

オプションを有効にするには、setoptコマンドを使う。これは次のように、setopt <オプション名>という形で使う。

# AUTO_CDオプションを有効にする
setopt AUTO_CD

オプションを無効にする

オプションを無効にするには、unsetoptコマンドを使う。これは次のように、unsetopt <オプション名>という形で使う。

# AUTO_CDオプションを無効にする
unsetopt AUTO_CD

または、オプション名の先頭にNO_を追加してsetoptコマンドを呼び出してもよい。

# AUTO_CDオプションを無効にする
setopt NO_AUTO_CD

これでもオプションが無効になる。

オプション名の基本ルール

setopt, unsetoptでオプション名を指定するときは、オプション名の大文字小文字の違いは区別されないし、オプション名に含まれる_はすべて無視される。

例えば、次の例はすべてAUTO_CDオプションを有効にしている。

setopt AUTO_CD
setopt auto_cd
setopt autocd
setopt AutoCd
setopt _AU__TO_CD

ちなみに、man zshoptionsでは、オプション名はすべて大文字、_区切りの形式で書いてある。

オプションの設定状態を確認する

setoptコマンドを引数を付けずに呼び出すと、有効に設定しているオプション一覧が表示される。

% setopt
autocd
autopushd
nobeep
extendedglob
extendedhistory
... 以下省略 ...

unsetoptコマンドを呼び出すと、無効に設定しているオプション一覧が表示される。

% unsetopt
noaliases
allexport
noalwayslastprompt
alwaystoend
noappendhistory
... 以下省略 ...

ただし、この出力で先頭に「no...」と付いているオプションは有効/無効が逆になっていることに注意。つまり、「noオプションを有効にする」、というのは「オプションを無効にする」という意味になる。

上の例で言うと、setoptの出力にnobeepが含まれているので、「nobeepオプションが有効」になっている。これはつまり、beepというオプションが無効に設定されていることを表している。

同じように「noオプションを無効にする」というのは「オプションを有効にする」のと同じ意味になる。上の例ではunsetoptの出力にnoaliasesが含まれている。これは「noaliasesオプションが無効」、つまり「aliasesオプションが有効」という意味になる。

なんでこんな分かりにくい形式になっているのかは知らない。

有効/無効含めてすべてのオプションの設定を一覧表示したいときは、set -oを使う。

set -o
noaliases             off
allexport             off
noalwayslastprompt    off
alwaystoend           off
noappendhistory       off
autocd                on
autocontinue          off
noautolist            off
... 以下省略 ...

これですべてのオプションの状態がわかる。setoptコマンドと同じように、先頭にnoが付いているオプションはon/offが逆になる。

on/off逆で分かりにくいという人は、次の記事が参考になる。

これぐらい知っておけば設定方法について迷わないと思うので、参考にしてください!

53
50
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
53
50

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?