Shell:从常规文件扩展$ HOME

格罗泰尔

我将命令存储在要由POSIX Shell程序逐行读取和运行的文件中。看起来像这样:

curl -fLo $HOME/.antigen.zsh git.io/antigen
curl -fLo $HOME/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
vim +"so $HOME/.vimrc" +PlugInstall +qa!

我还使用这个小的函数体来遍历它并运行每一行:

while read -r line; do
    $line
done < file

简单的东西。而且有效!但是,我在扩展$HOME到主目录时遇到了麻烦~因此)。我尝试使用exec子外壳并-rread循环中删除,但是curl语句创建'$HOME'目录,这不是我想要的,我希望命令以我的/home/.\+/目录为目标

既然这是一个奇怪的问题,并且您可能会想知道(我当然会),所以这不是XY问题。我花了相当多的时间设计该软件,并确定我需要将这些命令存储在文件中以使程序正常工作,除非证明这是绝对不可能的,否则我不会考虑这样做。另外,我不会扩展$HOME自己,因为我希望这些命令可以在其他用户的计算机上使用。

有任何想法吗?提前致谢!

乔纳森·莱夫勒

将评论转换为答案。

您可以使用:

sh -c "$line"

要么:

eval $line

通常eval认为这是危险的,但是我不确定这sh -c有很大的不同。想一想,为什么不简单地执行存储命令的文件呢?

sh "$file"

您可以sh -e "$file"用来停止未检查的错误,并添加-x以查看正在执行的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章