0

我正在使用 bash,但仍然不熟悉.profile, .bashrc, .bash_profile.

我想要的结果是拥有 ruby​​ 版本并rvm gemset显示在我的 bash 提示符上。

我添加PS1="\$(~/.rvm/bin/rvm-prompt) $PS1"到 .bash_profile (通过 xcode)并显示

ruby-1.9.3-p286 John-MacBook-Air:~ john$

我想要得到的是

ruby-1.9.3-p286@rails3 $

“rails3”是rvm gemset.

如何John-MacBook-Air:~ john从提示中删除?

我尝试在 .profile 和 .bashrc 中添加该行,但没有成功,但它似乎在 .bash_profile 中有效。这些文件之间的任何澄清将不胜感激。我在 Mac 上运行 rvm。

解决方案

在 .bash_profile 中包含以下内容

PS1='\W \$ '
PS1="\$(~/.rvm/bin/rvm-prompt) $PS1"

提示看起来像

ruby-1.9.3-p286@rails3 ~ $ 
4

2 回答 2

3

这条线是问题所在:

PS1="\$(~/.rvm/bin/rvm-prompt) $PS1"

您所说的是“将我的 rvm 提示添加到 PS1”,然后将预先存在PS1的放在最后。系统默认PS1是这样设置的:

PS1='\h:\W \u\$ '

在该设置\h中是主机名(此处为“John-MacBook-Air”),\W是当前工作目录,您的主目录缩写为~\u是您的用户的登录名(此处为“john”),\$如果您是#如果您以 root 身份登录,则为普通用户和 octothorpe ( )。在 OSX 上,默认情况下在/etc/bashrc. 如果要更改提示,则需要自定义提示的后半部分,而不是$PS1按原样重新输入新设置。删除主机名很常见,但我强烈建议不要删除当前工作目录。在终端会话中,这是非常有用的信息。只是我的两分钱。

To see what you can put there, take a look for information about setting your prompt in Bash.

于 2012-10-15T15:25:58.127 回答
2

我正在使用 bash,但仍然不熟悉 .profile、.bashrc、.bash_profile 之间的区别。

这取决于您的系统配置。阅读手册页。您还可以通过包含另一个来更改系统或用户范围的行为。

这里有一些注释可以更好地理解。

  • 每次登录初始化。(或:会话启动)有些启动文件只对登录 shell 执行。在我的系统上,他们只设置环境变量。(这是有道理的,因为环境变量是继承的)。那些可能被称为/etc/profile~/.profile平原sh。如果bash是你的 shell 并且你有~/.bash_profileor ~/.bash_login,默认情况下它会更喜欢那些(按此顺序)。请注意,在您下次登录之前,对会话启动文件的更改无效。此外,您需要确保将变量导出到环境中,例如PS1=something ; export PS1.
  • 每进程初始化。对于 Plain sh,没有默认的每进程初始化文件,但您可以将ENV环境变量设置为指向 1。对于bash,还有BASH_ENV变量和~/.bashrc文件。每个进程的初始化文件是您可以存储每个进程的 shell 设置(不能通过环境继承的那些)的地方,例如别名或函数定义。

如果您只想查看某个特定文件是否被执行,您可以随时回显某些内容,或者触摸某个文件,例如echo TESTtouch /tmp/test

于 2012-10-15T15:13:38.163 回答