строка не выполняется в .bash_profile и .bashrc на моем Mac OSX Snow Leopard

StackOverflow https://stackoverflow.com/questions/2309103

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top