シェルスクリプトでHISTSIZEを更新する

シェルスクリプトでHISTSIZEを更新する

grep+sed を使用して、以下をHISTSIZE使用して 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、または他のツールを使用して、1行で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

関連情報