How to edit .bashrc without logging in
You could boot with a live Linux CD and then mount the CentOS filesystem, and edit the .bashrc file from there.
Init /bin/sh from grub configuration
You can edit your grub configuration to load up a root shell instead of going to the GUI.
- Reboot your VM
- When the grub menu appears, select the first entry and press
e
to edit. If it doesn't appear, restart and hold Shift during boot Find the line beginning with
linux16
orlinux
. Mine looks like this. Yours may differ slightlylinux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root ro crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8
Change the
ro
torw
(readonly flag to readwrite so you can write changes) and appendinit=/bin/sh
to the line. This tells linux to run/bin/sh
instead ofinit
on startup. Example for my entrylinux16 /vmlinuz-3.10.0-327.18.2.el7.x86_64 root=/dev/mapper/centos-root rw crashkernal=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF8 init=/bin/sh
Press Ctrl-X to run the configuration. It won't be saved.
A root shell will appear. Use it to edit your
.bashrc
and remove the offending line.Note that you shouldn't keep using the OS in this state as the shell will be running as PID 1, normally reserved for the
init
process. You can manually continue init withexec /sbin/init
but I'd recommend just rebootingReboot as normal. Your previous changes will be forgotten.
We're essentially editing the boot options passed to Linux from GRUB, which tell Linux to mount the root filesystem read-write and start /bin/sh
for the init process
This works for me using Centos 7 and VirtualBox 4.3.12
CtrlAltF1 might be getting captured by the host, or VirtualBox might not be passing it on correctly. A couple of quick tests tells me that you can use the Host key defined in VirtualBox instead of CtrlAlt (could be the left Ctrl, or the left ⌘ on Macs). So, pressing ⌘F1 switched to TTY1 in VirtualBox for me (and similarly for ⌘F7 back to GUI).