我在Ubuntu的无人值守升级文件/etc/apt/apt.conf.d/50unattended-upgrades
中有一行,我试图完全换掉它:
// Unattended-Upgrade::Automatic-Reboot false;
到此:
Unattended-Upgrade::Automatic-Reboot true;
如果我像这样回应这条线,那就有效:
echo "// Unattended-Upgrade::Automatic-Reboot false;" | sed 's#// Unattended-Upgrade::Automatic-Reboot false;#Unattended-Upgrade::Automatic-Reboot true;#'
但是,如果我使用该文件就地执行相同的命令,则会失败:
sed -i.bak 's#// Unattended-Upgrade::Automatic-Reboot false;#Unattended-Upgrade::Automatic-Reboot true;#' /etc/apt/apt.conf.d/50unattended-upgrades
用于测试文件的示例数据:
// Automatically reboot *WITHOUT CONFIRMATION*
// if the file /var/run/reboot-required is found after the upgrade
// Unattended-Upgrade::Automatic-Reboot "false";
我该如何做到这一点?
答案 0 :(得分:1)
这是我的白痴,正如@ArnoBozo所指出的那样。
我的echo示例在“false”和“true”中缺少引号,而文件本身的引号为“false”。
我不确定是否应该删除这个问题,因为它显然是一个愚蠢的错误。
答案 1 :(得分:0)
要反映文件中的更改,您必须执行以下操作:首先将输出重定向到临时文件,然后将其重命名为原始文件。这对我有用。
sed 's/\/\/ Unattended-Upgrade::Automatic-Reboot false/Unattended-Upgrade::Automatic-Reboot true/g' > /etc/apt/apt.conf.d/tmp.dat
mv /etc/apt/apt.conf.d/tmp.dat /etc/apt/apt.conf.d/50unattended-upgrades