我的 makefile 里有这个,
rcFiles = .vim .vimrc .gitconfig .hgrc .screenrc .Xresources .dircolors .bashrc .ctags .bash_completion.d
install:
@$(foreach f,$(rcFiles), [ -f $(HOME)/$f ] || ln -v -s $(PWD)/$f $(HOME)/ ; )
如果 .bashrc 退出,我尝试
make install
我明白了
ln: creating symbolic link `/home/user/.vim': File exists
ln: creating symbolic link `/home/user/.bash_completion.d': File exists
然后进程中止。 为什么没有条件阻止这个问题?
最佳答案
ln -sfvn source target
--force
标志使其替换现有链接
--no-dereference
避免为指向目录的链接创建“子目录”链接,如果该链接已经存在(对 .bash_completion.d
和 .vim 有用)
目录)
rcFiles = .vim .vimrc .gitconfig .hgrc .screenrc .Xresources .dircolors .bashrc .ctags .bash_completion.d
install:
@$(foreach f,$(rcFiles), [ -f $(HOME)/$f ] || ln -v -f -n -s $(PWD)/$f $(HOME)/ ; )
或者
@$(foreach f,$(rcFiles), [ -e $(HOME)/$f ] || ln -v -f -n -s $(PWD)/$f $(HOME)/ ; )
不仅要检测文件(-f
),还要检测目录。您可能想要明确检查文件和目录 [ -f ... || -d ... ]
.
关于bash - 生成文件 : foreach error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6588695/