请问如何在不改为绝对路径的做法下解决问题?
目录位置的东西都是存在的,但是执行却报错了。
并且手动执行echo "cp ${cfLoca}/polybar/my_config ${Loca}/polybar/"的也正常。
我的shell是zsh5.8,内核是5.6.6-arch1-1
代码:
#!/bin/zsh
cfLoca="~/.config"
Loca="~/Repo/remote/dotfiles"
#backup i3-wm
cp ${cfLoca}/polybar/my_config ${Loca}/polybar/
报错:
cp: cannot stat '~/.config/polybar/my_config': No such file or directory
cp+含~的变量执行遇到的翁提
-
- 帖子: 1
- 注册时间: 2020-04-26 22:24
- astolia
- 论坛版主
- 帖子: 6454
- 注册时间: 2008-09-18 13:11
Re: cp+含~的变量执行遇到的翁提
原因是,shell是在执行命令之前把~换成$HOME变量的内容,而你用双引号包裹后,shell不再做替换,直接把~传给了cp,而cp又不会去做替换,当成普通路径处理,就找不到了。
要么把~换成$HOME,要么变量赋值时不要用引号包住~,即cfLoca=~"/.config"这样
要么把~换成$HOME,要么变量赋值时不要用引号包住~,即cfLoca=~"/.config"这样