Exec a Login Shell
While setting up the Droplet that's hosting this site, I had to switch from root to the rails user several times. In order to get gems and bundler to work properly, I needed a login shell, which you don't get automatically just using su
. The solution is to exec bash -l
after su
.
What I didn't already know is exactly why that command does what it does. Turns out that exec
replaces the current process (my shell) instead of starting a new sub-process. So while just typing bash -l
will also give you the intended result, it's not as efficient.