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

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

按照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 命令恢复。感谢。

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