Ubuntu – /usr/sbin/grub-mkconfig: 1: /etc/default/grub: If: not found


When I run sudo update-grub2 or sudo update-grub

I get the response

Sourcing file `/etc/default/grub'
/usr/sbin/grub-mkconfig: 1: /etc/default/grub: If: not found

However, my /etc/default/grub file is definitely there. The contents are as such:

 If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="splash radeon.si_support=0 amdgpu.si_support=1 radeon.cik_support=0 amdgpu.cik_support=1"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)

# Uncomment to disable graphical terminal (grub-pc only)

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux

# Uncomment to disable generation of recovery mode menu entries

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Any clue what the error could be? Thanks!

Best Answer

The error message

/usr/sbin/grub-mkconfig: 1: /etc/default/grub: If: not found

is not telling you that the file /etc/default/grub is not found, it's saying that the command If is not found at line #1 of that file. That's because If should be part of the comment block i.e.

 If you change this file, run 'update-grub' afterwards to update

should be

# If you change this file, run 'update-grub' afterwards to update

You will need to edit the file (with sudoedit /etc/default/grub for example) and insert the missing #