zsh で path にディレクトリを追加するときは (N-/) を付けよう - Qiita
# 間違いではない
path=($HOME/bin $path)
# よりよい
path=($HOME/bin(N-/) /usr/local/bin(N-/) $path)
解説
(N-/)
はファイル名修飾子
ファイル名に条件つけて絞り込みができるようになる。
/
- ディレクトリが存在するときだけ
()
の左側の値に展開される。 - ディレクトリが存在しない場合や、ファイル、シンボリックリンクの場合にエラー
- ディレクトリが存在するときだけ
N
- ディレクトリが存在しないときにエラーではなく空文字に展開される
-
- シンボリックリンクの実態を追いかける
$ ls -1 /
Applications
bin
cores
dev
etc -> private/etc
home -> /System/Volumes/Data/home
Library
opt
private
sbin
System
tmp -> private/tmp
Users
usr
var -> private/var
Volumes
$ echo /tmp
/tmp
$ echo /tmp(/)
zsh: no matches found: /tmp(/)
$ echo /tmp(N/)
$ echo /private/tmp(N/)
/private/tmp
$ echo /tmp(N-/)
/tmp