RVM has since moved to using .profile, so just put the “cd .” in .profile and it will work
— Mikael Wikman commented below
Original Article
Tmux is a terminal multiplexer. I switched to Tmux from GNU Screen recently.
I work on several Ruby projects. I use RVM to manage gem set for different
projects, and use rvmrc file to switch gem set automatically. I usually start
a Tmux session for a project in its root directory, so all the windows and panes
in the session use the project root as default directory. The problem is, the
new created shell in the session does not load .rvmrc
in the root directory. I
have to force loading the file using “cd .
”
I also use Tmuxinator. It can specify a rvm gem set though project yml
file. But this setting only has effect on the windows and panes pre-configured
in the yml file, the new created shells do not load .rvmrc
. Moreover, if the
project needs different gem sets for different branches, each gem set must has
its own tmuxinator project file.
Finally, I figured out a simple solution. Just append cd .
to the end of the
shell init file (.bashrc
for bash and .zshrc
for zsh). Then all the new
shells will try to load the .rvmrc
file in the default directory where it
starts, including shells in Tmux.
# try loading .rvmrc, add it below the line loading RVM
cd .