Добре, вибачте, якщо це щось німе, але у мене не вистачає ідей.
Мета: випереджати /usr/local/bin
в$PATH
Проблема: $PATH
не буде робити те, що я хочу або очікую
Як я потрапив сюди: я хочу почати вчитися програмувати, тому мені стає зручно возитися під капотом, але не маю багато досвіду. Я встановив fish
оболонку (бо це дружньо!) За допомогою homebrew
та встановив її як свою оболонку за замовчуванням (під system prefs>users & groups>advanced
). У якийсь момент я побіг brew doctor
побачити, чи всі мої інсталяції кошерні, і це запропонувало мені перейти /usr/local/bin
на передню частину, $PATH
щоб я міг використовувати інсталяцію, git
а не копію системи. Чудово - але між, path_helper
і fish
щось сталося, $PATH
що було поза моїм контролем, і я ніколи не міг домогтися правильного впорядкованого шляху.
Навколишнє середовище: OSX 10.8.2, підвищений з 10.7ish, з xcode
і встановлений DevTools, плюс x11
, homebrew
іfish
Більш детальна інформація: Я налаштував мої оболонки користувача по замовчуванням назад в bash
, і спробував різні снаряди через terminal.app
- bash
, fish
, sh
. Я перемістився /usr/local/bin
на вершину, /etc/paths
але це нічого не змінило. Я переглянув різні config.fish
файли і прокоментував речі, які можуть зіпсуватись з $ PATH, не допомогло. У мене є такі файли /etc/paths.d/
:
./10-homebrew
що містять /usr/local/bin
./20-fish
що містять /usr/local/Cellar/fish/1.23.1/bin
./40-XQuartz
що містять /opt/X11/bin
Я додав set +x
до свого profile
і коли починаю terminal.app
отримувати:
Last login: Mon Oct 1 13:31:06 on ttys000
+ '[' -x /usr/libexec/path_helper ']'
+ eval '/usr/libexec/path_helper -s'
++ /usr/libexec/path_helper -s PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/fish/1.23.1/bin:/opt/X11/bin";
export PATH;
+ '[' /bin/bash '!=' no ']'
+ '[' -r /etc/bashrc ']'
+ . /etc/bashrc
++ '[' -z '\s-\v\$ ' ']'
++ PS1='\h:\W \u\$ '
++ shopt -s checkwinsize
++ '[' Apple_Terminal == Apple_Terminal ']'
++ '[' -z '' ']'
++ PROMPT_COMMAND='update_terminal_cwd; '
++ update_terminal_cwd
++ local 'SEARCH= '
++ local REPLACE=%20
++ local PWD_URL=file://Chriss-iMac.local/Users/c4
++ printf '\e]7;%s\a' file://Chriss-iMac.local/Users/c4
Chriss-iMac:~ c4$
Так виглядає, що біг path_helper біжить, але потім echo $PATH
мене працює мережа /usr/bin:/bin:/usr/sbin:/sbin
. Отже, схоже, path_helper
це навіть не робить того, що належить?
Я впевнений, що тут є якась чітко визначена поведінка, яку я не розумію, або я щось зламався, намагаючись виправити це. Будь ласка, допоможіть!
fish
, створюючи~/.config/fish/config.fish
з ,set PATH /usr/local/bin $PATH
але я до сих пір питання , по-path_helper
видимому , не працює , як і повинно бути, і ,$PATH
таким чином , бути неповним. Також ще є випуск різних$PATH
для сценаріїв, програм, запущених із графічного інтерфейсу тощо.