新手问题 Ubuntu12.04 安装 RVM 后,打开新的虚拟终端都要执行 source .bashrc

johnlu · 2013年07月17日 · 最后由 moliliang 回复于 2014年06月25日 · 7097 次阅读

按照http://ruby-china.org/wiki/rvm-guideRVM成功安装 但每次打开新的终端,都不能使用ll命令,需要执行 source .bashrc 后才可以!

其它问题都正常,登录后就算没有执行 source .bashrc;RVM、gem 的功能都能正常用。 但就不能使用 ll 这样的别名命令了

没有人遇到吗?不要沉了!

把 terminal 那个设置成 login-shell 了吗?

#2 楼 @jcsszj 如何设置?为什么要设置?

#2 楼 @jcsszj 如果我是用 SSH 连接上去的呢?Ubuntu 是 Server 版

“Ubutnu 的 Gnome Terminal 在启动时是 non-login shell,而 non-login shell 只会读取~/.bashrc 来进行初始化,所以没有读入写在~/.bash_login 中的 RVM loading line,以至于 RVM 没有作为 function 载入,故悲剧发生了。”

http://ruby-china.org/topics/3705

#4 楼 @JohnLu 看错问题啦。。

#6 楼 @jcsszj 其它问题都正常,就算没有执行 source .bashrc;RVM、gem 的功能都能正常用。 但就不能使用ll这样的别名命令了

我也搞不懂 Linux 读配置的机制

在 .bashrc .bash_login .bash_profile 里面都加条 echo 命令看看到底读了哪个。

#8 楼 @Rei 没有 bash_login 文件

ll 的 alias 是在 ~/.bashrc 中配置的,也就是楼主的 terminal 启动时没有加载 ~/.bashrc。~/.bash_profile 文件存在吗?

#10 楼 @reyesyang .bash_profile 安装 RVM 才有的,里面只有这句: [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

  1. 看看 ~/.bashrc 里面有没有这句,有的话直接把这个 ~/.bash_profile 删掉
  2. 没有的话,把这句添加到 ~/.bashrc 里后再把 ~/.bash_profile 删掉
  3. 调整你的终端设置,编辑 -> 配置文件首选项 -> 标题和命令 -> 以登陆 shell 方式运行命令 前面的勾去掉。关掉重开一个终端,应该就好了。

#12 楼 @reyesyang 高手,按照你的方法搞定了!非常感谢!

#13 楼 @JohnLu 我也是就久病成医,自荐两篇文章,能解释为什么要那么做。:)

  1. 手把手安装 RVM 以及为什么 RVM is not a function
  2. 类 unix 系统如何初始化 shell

#14 楼 @reyesyang 好文章,谢谢分享! 原来如此,用 SSH 连接肯定是 Login Shell 了。如果.bash_profile 存在了,就只执行该文件的内容。

man bash

Ruby on Rails 的官网 里面有如下文字

We recommend managing your Ruby installation through rbenv. It's an easy way to run multiple versions for different applications and update when a new release is made.

所以 RVM 用得不爽的话还是换 rbenv 吧。。。

背景

  • rvm 安装后 不会启动脚本放在 ~/.bash_profile 中,不会放在 ~/.bashrc 中
  • GNOME Terminal 默认情况下,是 nolgoin shell,所以不会加载 ~/.bash_profile

解决方案

  1. GNOME Terminal 采用 Login 模式登录(Menu-Edit-Profile..-Tile_And_Command)
  2. 在~/.bashrc 中加载 RVM source "$HOME/.rvm/scripts/rvm"

删除 将.bash_profile 中的数据搬到 .bashrc 中,然后重新登录,ll 命令恢复。感谢。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号