我使用 grep + sedHISTSIZE
使用以下命令更新 bash 配置文件中的变量:
if grep -q "^HISTSIZE=" /etc/profile ; then
sed -n -i 's/HISTSIZE=.*/HISTSIZE=10000/g' /etc/profile
else
echo 'HISTSIZE=10000' >> /etc/profile
fi
是否可以使用 sed 或 awk 或任何其他工具在一行中完成更新 bash 中的任何环境变量?
答案1
使用awk
:
awk -F= -v k=HISTSIZE -v v=10000 '
$1==k{$2=v;s=1};1;
END{OFS="=";if(!s)print k,v}
' /etc/profile > /etc/profile.tmp && mv /etc/profile.tmp /etc/profile
使用 GNU awk,您可以编辑到位:
awk -i inplace -F= -v k=HISTSIZE -v v=10000 '
$1==k{$2=v;s=1};1;
END{OFS="=";if(!s)print k,v}
' /etc/profile
如果您只需要更改当前用户的设置,您可能需要使用~/.profile
而不是/etc/profile
.