偶然中,我运行了命令
exec $SHELL -l
在我的终端中,它改变了我的提示符的外观
Macintosh:~ myname$ exec $SHELL -l
Macintosh-2:~ myname$ cd
例如,Macintosh 后面有一个“-2”
Macintosh:~ myname$
Macintosh-2: myname$
我不确定这是否是导致我的系统出现某些问题的原因。
我正在尝试在我的系统上使用 Ruby 1.9.3,它是用 Rbenv 安装的。
rbenv version
1.9.3-p327
但是,当我尝试安装 gems 时,我收到一条错误消息,提示它们至少需要 ruby 1.9.2,因此我假设该机器仍在使用 Mac 自带的 Ruby 版本。我尝试通过以下方式修复此问题:
gem install bundle
rbenv rehash
bundle install
但是我一直收到相同的错误消息,关于至少需要 Ruby 1.9.2,所以我想知道运行的效果是否会exec $SHELL -l
因为某种原因阻止 gems 的安装。
答案1
$SHELL
指的是您的 shell(命令解释器)。大多数 shell 都能识别出–l
(小写 L)选项,表示它是一个“登录 shell”,这主要意味着它会读取和处理额外的命令文件(例如,csh
始终读取.cshrc
,但如果它是“登录 shell”,它也会读取.login
)。您已启动一个正在运行的新 shell 进程,并告诉它像“登录 shell”一样运行。
有些 shell(我相信bash
是其中之一)会跟踪分层的 shell 进程,并让用户显示深度或级别。这通常包含在 shell 提示符中,例如:
(提示字符串)
$
pwd
/dir1
(提示字符串)$
$SHELL
(迅速的2
细绳)$
cd ../dir2
# 注意 shell 级别是2
,
(迅速的2
细绳)$
rm *
# 表示您处于一个新的 shell 进程中。
(迅速的2
细绳)$
exit
(提示字符串)$
pwd
#注意返回到原始shell进程。
/dir1
这应该与您使用 RubyGems 时遇到的问题无关。