- 作者: 広瀬雄二,A5
- 出版社/メーカー: 技術評論社
- 発売日: 2009/06/17
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 126回
- この商品を含むブログ (36件) を見る
今日は第2章。
zshの初期化ファイル
デフォルトのファイル読み込み順
- /etc/zshenv
- ~/.zshenv
- /etc/zprofile (ログインシェルの場合)
- ~/.zprofile (ログインシェルの場合)
- /etc/zshrc (これ以下すべて、対話的に起動した場合)
- ~/.zshrc
- /etc/zlogin (ログインシェルの場合)
- ~/.zlogin (ログインシェルの場合)
何でもかんでも"~/.zshrc"に書いてしまってたけど、ログインシェルのとき、リモートシェルで起動するとき、一度だけ行えばいいだけの設定かどうか、など役割を考えて、どこに書くか分けてやるべきのようだ。
シェルオプション
"setopt" / "unsetopt"コマンドで様々なオプションを設定したり解除したりできる。引数を与えない場合、現在セットされている/されていないオプションを一覧表示される。試しにやってみたら、
$ setopt | wc -l 8 $ unsetopt | wc -l 151
どんだけ使いこなしてないんだ自分w
コマンド前置
コマンドの前に置くことで解釈や実行の働きを変えたりする
noglob
ファイル名のメタキャラクタ展開をしない
$ ls fuga.txt hoge.txt piyo.txt $ echo * fuga.txt hoge.txt piyo.txt $ noglob echo * *
exec
fork(2)せずに現在のシェルのプロセスのままそのコマンドを起動する。
-
そのプロセスのargv[0]に"-"を前置する、らしい。
$ cat > hoge.c
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("%s\n", argv[0]);
}
$ gcc hoge.c
$ ./a.out
./a.out
$ - ./a.out
-./a.outで確認できたけど、どういうときに使うんだろう…?
コマンド検索制御
command / builtin
同名のコマンドが複数有る場合にどちらを実行するか指定する。
コマンドは
- エイリアス
- シェル関数
- "/"が含まれている場合、実行権限つきファイルを指定してあるもの
- 内部コマンド
- 外部コマンド
という順に検索されて実行されるらしい。
$ pwd
/Users/sugyan/temp/hoge
$ function pwd { echo "func" }
$ pwd
func
$ alias pwd="echo alias"
$ pwd
alias"builtin"や"command"は、それらに左右されずに明示的に内部コマンドや外部コマンドの方を実行するようになる。
$ alias pwd="echo alias"
$ pwd
alias
$ builtin pwd
/Users/sugyan/temp/hoge
$ function ls { echo func }
$ ls
func
$ command ls
fuga.txt hoge.txt piyo.txtこのへんはbashも同じか。
whence
aliasや関数、コマンドの定義を出力したりできる
$ whence pwd
echo alias
$ whence -ac pwd
pwd: aliased to echo alias
pwd () {
echo func
}
pwd: shell built-in command
/bin/pwd"whence -ca"の代わりに"where", "whence -c"の代わりに"which"を使える。
enable / disable
エイリアス、関数、内部コマンドなどへの参照の有効/無効を切り替えられる。
$ where where where: shell built-in command $ disable where $ where zsh: command not found: where $ enable where $ where where where: shell built-in command
"disable enable"ってやっちゃったら"enable"が使えなくなって元に戻すことができなくなっちゃうんだけど、そういうときはどうしたらいいんだろう ><
今日はここまで