在流浪汉配置期间使用Sed将行附加到文件
我目前正在使用Vagrant来设置运行Ubuntu的开发机器。 我想在我的.profile
中添加几行,使用sed
将目录添加到我的$PATH
变量中。 为此,我将这些行添加到我的机器的Vagrantfile
:
config.vm.provision "shell", inline: "sudo sed -i \'$ a if [ -d \\\"/usr/local/lib\\\" ]; then\n PATH=\\\"/usr/local/lib:$PATH\\\"\nfi\' /home/vagrant/.profile"
据我所知和测试,我已经逃脱了让Vagrant运行这个有效的shell命令所需的所有角色:
sudo sed -i '$ a if [ -d \"/usr/local/lib\" ]; then\n PATH=\"/usr/local/lib:$PATH\"\nfi' /home/vagrant/.profile
这将这些行添加到我的.profile
:
if [ -d "usr/local/lib" ]; then PATH="usr/local/lib:$PATH" fi
但是,当我做一个vagrant up
我在尝试运行命令时收到以下错误:
==> default: Running provisioner: shell... default: Running: inline script ==> default: stdin: is not a tty ==> default: sed: -e expression #1, char 44: extra characters after command The SSH command responded with a non-zero exit status.
我在Vagrantfile
代码中的某个地方Vagrantfile
,或者这里有其他错误吗?
要修复“sed:-e expression#1,char 44:命令后的额外字符”,转义\ n,即为所有\ n添加另一个反斜杠:
config.vm.provision "shell", inline: "sudo sed -i \'$ a if [ -d \\\"/usr/local/lib\\\" ] then\\n PATH=\\\"/usr/local/lib:$PATH\\\"\\nfi\' /home/vagrant/.profile"