Почему оболочка не читает файлы запуска Bash?

2526
writ

Я просто пытаюсь выполнить простую задачу добавления моего каталога MySQL в переменную PATH, чтобы я мог использовать команды mysqlи т. Д. В моем терминале на Mac OS X 10.6.6 (Snow Leopard). После того, как изменяя .profile, .bash_profileи даже создавая .bashrc, и убедившись, что мой путь был правильно введен, каждый раз, когда я пытаюсь запустить mysqlкоманду, или удара

echo $PATH 

дает мне такие же точные результаты:

/Users/GabbAHH/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/bin:/Users/GabbAHH/.rvm/gems/ruby-1.9.2-p136@global/bin:/Users/GabbAHH/.rvm/rubies/ruby-1.9.2-p136/bin:/Users/GabbAHH/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin 

Как видите, MySQL нет. Позже я понимаю, что это на самом деле не проблема, так как я удалил все три из этих файлов из своего /Users/GabbAHH/пользовательского каталога, и я все еще получаю тот же результат!

Прямо сейчас скрипт внутри моих файлов запуска выглядит так:

export PATH=/usr/local/mysql/bin:$PATH  export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" 

Было ли что-то, что я сделал, чтобы мой Терминал обходил эти файлы запуска? Это просто чтение из /etc/profileпапки?

Это дает тот же результат? Несмотря на это, я поменял их.

Кроме того, как мне узнать, использую ли я интерактивную или неинтерактивную оболочку и оболочку для входа / не входа? Кажется, я могу создавать папки и т. Д. Без запроса ввода моего пароля, хотя я помню, что до этого у меня было sudoмного команд при установке гемов для Ruby и т. Д. Кроме того, мне нужно было вводить пароль при включении MySQL. вкл выкл.

0
это работает вне сценария запуска? Orbit 13 лет назад 0
@writ Вместо того, чтобы кричать * Большое спасибо * лучше было бы * принять * его ответ, нажав на зеленую галочку рядом с его ответом, чтобы указать, что его решение помогло вам решить вашу проблему;) Yi Jiang 13 лет назад 0

2 ответа на вопрос

2

Просто поставьте:

echo HELLO, I AM HERE 

в вашем скрипте запуска и войдите как обычно.

Если вы обнаружите, что строка не распечатывается, то да, вы обойдете этот сценарий.

Кроме того, вы должны сообщить нам, в какой скрипт вы его вставляете, поскольку у bashнего есть некоторые ... довольно удивительные ... правила для определения того, какие скрипты запускаются :-) Подробности вы можете найти в INVOCATIONразделе man bash. Моя конкретная версия продолжается около 50 строк (а это 150 столбцов xterm), поэтому я не буду утомлять вас, разместив ее здесь.

Достаточно сказать, что это сложно.

Например, вы можете быть сдержанным тот факт, что bashтолько исполнение такой первый из ~/.bash_profile, ~/.bash_loginи ~/.profileчто существует и может быть прочитан. Это может быть неинтерактивная оболочка, где правила разные. Вы можете запустить оболочку с --noprofileили --norcили --rcfile=whateverили или --posix.

Возможности, хотя и не безграничны, чертовски раздражают.

Благодарю за ваш ответ! Когда я открываю терминал (не входя в систему), я получаю «HELLO, Я ЗДЕСЬ», когда я вхожу в «echo HELLO, Я ЗДЕСЬ». Значит ли это, что сценарий для использования файлов запуска не обойден? Опять же, я не думаю, что мой Терминал вообще читает эти 3 вышеупомянутых файла запуска, так как я получил тот же результат в echo $ PATH, когда полностью удалил их из моего домашнего пользователя. Я не уверен, что вы подразумеваете под секцией вызова. Я ввел "man bash", который сначала печатал строки пустых строк, а затем некоторые описания, которые не включают вызов 13 лет назад 0
Если вы поместите этот `echo` в файл запуска, и терминал распечатал его при запуске, то он _is_ обрабатывается. В сценарии, где вы добавляете mysql к пути, добавьте к нему `echo XYZZY` и поставьте после него` echo $ PATH`. 13 лет назад 0
Спасибо paxdiablo за ваш быстрый ответ. Я даже не сделал того, что вы мне в последний раз сказали, но я просто по одному удалил сценарий HELLO, Я ЗДЕСЬ из моих файлов сценариев запуска и сузил его до .bash_profile, из которого читается. Хорошей новостью является то, что после полного их удаления мои команды MySQL теперь работают! Но что неприятно, так это то, что я понятия не имею, почему это работает сейчас, поскольку у меня точно такой же сценарий, как и раньше. Я даже не перезагрузил свой компьютер. Я только что ввел эхо XYZZY и эхо $ PATH в .bash_profile, и я получаю 13 лет назад 0
XYZZY / usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / usr / local / git / bin: / usr / X11 / bin Печать в echo $ PATH по-прежнему вызывает то же самое, что и до. Это означает, что я до сих пор нигде не вижу каталог MySQL! В настоящее время это мой .bash_profile: echo XYZZY echo $ PATH export PATH = / usr / local / bin: / usr / local / sbin: / usr / local / mysql / bin: $ PATH [[-s "$ HOME / .rvm / scripts / rvm "]] &&. "$ HOME / .rvm / scripts / rvm" # Это загружает RVM в оболочку session.export. Что еще более тревожно, так это то, что я не могу воспроизвести те же результаты, что и при удалении двух строк, я получил то же самое ... , 13 лет назад 0
bash: команда снова не нашла ошибку при вводе команды MySQL, но позже, когда я читаю, сохраняю, удаляю, сохраняю, она работает снова и снова! Кажется, у него есть собственный разум за счет моего разума! 13 лет назад 0
2
Cal30

My issue was the existence of a .bash_profile, so I made my changes by modifying there. All it was doing before was setting up my JAVA_HOME and a GROOVY_HOME...so I added my changes to the end of that file and now all is working great.

Thanks!