無意中,我運行了命令
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 問題沒有任何關係。