строка не выполняется в .bash_profile и .bashrc на моем Mac OSX Snow Leopard - PullRequest
0 голосов
/ 22 февраля 2010

Я только что установил Ruby Version Manager (RVM), который работает нормально, но он попросил меня поместить следующую строку в мои файлы /.bash_profile и ~ / .bashrc:

if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi

глядя на содержимое я вижу следующее:

tammam56$ cat /.bash_profile
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi

tammam56$ cat ~/.bashrc 
export PATH=/usr/local/bin:$PATH
export MANPATH=/usr/local/man:$MANPATH
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi

Однако, когда я запускаю новое окно Терминала, он не выполняет команду, которую я знаю, так как я устанавливаю свою версию Ruby по умолчанию на 1.9, и если я выполняю строку вручную, я получаю правильную версию:

tammam56$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
Macintosh-37:~ tammam56$ if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
Macintosh-37:~ tammam56$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]

Есть идеи, как мне это исправить?

Спасибо

Tam

Ответы [ 3 ]

1 голос
/ 22 февраля 2010

Если у вас есть ~ / .profile, попробуйте добавить в него следующую строку.

if [[-s /Users/tammam56/.rvm/scripts/rvm]]; затем источник /Users/tammam56/.rvm/scripts/rvm; фи

1 голос
/ 22 февраля 2010

Подтвердили ли вы, что другие команды в .bashrc и / или .bash_profile обновляются правильно?

Далее необходимо подтвердить, запускает ли Терминал оболочку в качестве оболочки для входа в систему или нет (см. «Настройки» -> «Запуск»).

со страницы руководства bash:

Когда bash вызывается как интерактивная оболочка входа или как неинтерфейс активная оболочка с параметром --login, сначала она читает и выполняет выполняется из файла / etc / profile, если этот файл существует. После прочтения этот файл, он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile, в этом порядке, и читает и выполняет команды от первого, который существует и читается. Опция --noprofile может использоваться, когда Оболочка начинает тормозить это поведение.

Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды из ~ / .bashrc, если этот файл существует. это может быть заблокировано с помощью параметра --norc. Параметр файла --rcfile заставит bash читать и выполнять команды из файла вместо ~ / .Bashrc.

0 голосов
/ 12 ноября 2010

Я обнаружил, что самым простым решением этой проблемы было перемещение всего содержимого из моего файла ~ / .bashrc (так что мой ~ / .bashrc теперь пуст) в новый файл ~ / .bash_profile. Теперь все вкладки Terminal.app автоматически запускают все строки, включенные в ~ / .bash_profile. Это также относится к iTerm.

...