2014-11-24 2 views
-1

У меня возникли проблемы с установкой Homebrew, и это похоже на проблему (неверная последовательность байтов в сообщении об ошибке UTF-8 (ArgumentError)) из-за ошибки в моем PATH. когда я бегу эхо $ PATH, я получаю следующее (обязательно выделите ультраправых в блок кода ниже, чтобы увидеть ошибку):OSX Yosemite - недопустимые символы в пути

/usr/local/mysql/bin:/opt/subversion/bin/:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:PATH=/usr/local/share/python:$PATH:PATH=/usr/local/share/npm/bin:$PATH:export PATH��:/usr/local/git/bin 

Я понятия не имею, где эти странные персонажи как раз перед/usr/local/git/bin. Я использую bash (попробовал zshell, та же проблема). Я не могу найти, откуда это происходит. файл .bash_profile выглядит также чистым.

+1

Независимо от того, что у них есть, есть и другая ошибка - 'export' является (обычно ненужной) частью команды, а не частью значения. Значение предполагает, что вы установили 'git' локально, когда это произошло. Также есть несколько других ошибок, в которых у вас есть 'PATH =' и '$ PATH' как часть значения. Но мы не можем устранить проблему без доступа к вашим файлам. Вы вручную отредактировали '.bashrc'? Как насчет '.profile'? – tripleee

+0

мог бы получить это, отредактировав файлы ~/.bashrc и ~/.bash_profile? .bashrc пуст, и в .bash_profile есть куча вещей, модифицированных macports. Кроме того, как я могу сделать эти файлы доступными для просмотра? –

+1

Вам нужно будет установить, где сделаны ошибочные изменения в вашей PATH. Поскольку вы используете 'bash', я предлагаю использовать:' bash -x -l' (за которым следует 'exit'), чтобы точно увидеть, что происходит, когда вы входите в систему. Похоже, что есть, пожалуй, 5 попыток в коде PATH и 4 из них ошибочны. Однако это немного странно, что вы видите. Вы также можете попробовать «echo» $ PATH »| od -c', который покажет вам, какие значения байтов имеют ошибочные символы. –

ответ

1

Осмотрите ~/.profile, ~/.bash_profile и ~/.bashrc. Также возможно, что эти значения устанавливаются в /etc/profile или других общесистемных файлах, но характер ошибок таков, что я предполагаю, что они являются результатом ваших собственных ручных изменений ваших личных файлов. Вы лучший судья, чтобы решить, что вы, возможно, изменили и когда.

Посмотрите на записи, такие как:

PATH='/usr/local/share/python:$PATH' 
PATH='PATH=/usr/local/share/npm/bin:$PATH' 
PATH='export PATH��:/usr/local/git/bin' 

Они должны вместо этого выглядеть

PATH=/usr/local/share/python:$PATH 
PATH=/usr/local/share/npm/bin:$PATH 
PATH=$PATH:/usr/local/git/bin 
# Not strictly necessary -- PATH is already exported 
export PATH 

Смотрите рисунок? Все они добавляют значение к PATH, установив его на prefix:$PATH или $PATH:suffix, где новый префикс или суффикс - это каталог, в котором вы установили локальный пакет. Является ли новое значение префиксом или суффиксом, вероятно, не имеет большого значения - за исключением случаев, когда вы пытаетесь переопределить системную версию (скажем, установлен ваш /usr/local/git, потому что /usr/bin/git слишком старый - тогда важно, чтобы ваша версия local на первом месте в PATH). При первом запуске команды существует небольшая разница в скорости; оболочка должна искать больше мест, прежде чем найти ее, если она находится в конце PATH.

Разница в цитировании значителен - PATH=$PATH:suffix расширяется к старому значению PATH с :suffix добавленного дальше, в то время как PATH='$PATH:suffix' заменяет старое значение PATH с символьной строкой $PATH с :suffix добавлены. Вам повезло, что ничто из этого не заменило ваш оригинальный PATH, что сделало бы вашу оболочку по большому счету неработоспособной (по крайней мере, пока вы не обнаружите, что вам нужно использовать /bin/ls вместо ls).

+0

Спасибо за подробное объяснение. Я предполагаю, что мое замешательство (поскольку я совершенно новичок во всем этом) заключается в том, что существует так много файлов, которые могут установить эту переменную пути. Есть ли иерархический порядок? Потому что я посмотрел на ~/.profile, ~/.bash_profile и ~/.bashrc, и ни один из этих файлов не ссылался на все, что связано с git. –

+0

@ У комментария Джонатана Леффлера есть хороший метод отладки. В конце концов, если вы не можете понять, откуда берутся ошибочные значения, вы можете просто переопределить их в своем файле запуска ('.bashrc' должен охватывать большинство баз). – tripleee

+0

Еще раз спасибо за помощь. Наконец, я смог преодолеть проблему, переопределив это в файле .bashrc. Я разочарован тем, что у меня не было больше времени для изучения советов по устранению проблем @ JonathanLeffler. Я провел некоторое время с ними, и пока я не нашел основной причины проблемы, я больше узнал о том, как это работает. В следующий раз я буду более осторожен с моими экспериментами. –

Смежные вопросы