строка не выполняется в .bash_profile и .bashrc на моем Mac OSX Snow Leopard
-
22-09-2019 - |
Вопрос
Я только что установил 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
Решение
Если у вас есть ~/.profile, попробуйте добавить к нему следующую строку.
если [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ;затем исходный код /Users/tammam56/.rvm/scripts/rvm ;фи
Другие советы
Вы подтвердили, что другие команды в .bashrc и / или .bash_profile обновляются должным образом?
Далее вы должны подтвердить, запускает ли терминал оболочку как оболочку входа в систему или нет (см. раздел Настройки -> Запуск).
Со страницы руководства bash:
Когда bash вызывается как интерактивная оболочка входа в систему или как не взаимодействующая активная оболочка с параметром --login, она сначала считывает и выполняет com- команды из файла /etc/profile, если этот файл существует.После прочтения в этом файле он ищет ~/.bash_profile, ~/.bash_login и ~/.profile, в таком порядке и считывает и выполняет команды из первого, который существует и доступен для чтения.Параметр --noprofile может использоваться при запуске командной оболочки для подавления такого поведения.
Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash считывает и выполняет команды из ~/.bashrc, если этот файл существует.Это может быть заблокировано с помощью опции --norc.Параметр --rcfile file заставит bash считывать и выполнять команды из файла вместо ~/.bashrc.
Я обнаружил, что самым простым решением этой проблемы было переместить все содержимое из моего файла ~ /.bashrc (поэтому мой ~ /.bashrc теперь пуст) в новый файл ~/.bash_profile.Теперь на всех вкладках Terminal.app автоматически запускаются все строки, включенные в ~/.bash_profile.Это также относится к iTerm.