
Некоторое приложение просит меня добавить что-то в переменные среды PATH. Я знаю, что один из способов сделать это — создать файл по адресу ~/.zshrc
, но я хотел бы знать, где находится файл, в котором PATH=...
хранится переменная?
Когда я набрал текст, echo $PATH
я получил:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands:/Applications/Xamarin Workbooks.app/Contents/SharedSupport/path-bin
Из файла, /etc/paths
который я получил:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Так какой же файл добавил дополнительные пути?
Ответ на комментарий:
Я получил: (простите, что я изменил свое имя пользователя на alice
)
grep: /Users/alice/.profile: No such file or directory
grep: /etc/environment: No such file or directory
grep: /etc/zsh/zprofile: No such file or directory
grep: /Users/alice/.zshrc: No such file or directory
grep: /Users/alice/.profile: No such file or directory
решение1
Как вы сказали вваш собственный ответ, вам не нужно знать, где PATH
изначально заполнена переменная.
Вы можете легко добавлять новые пути в PATH
конец или начало, а zsh
также имеете удобный способ удаления дубликатов.
Сначала вы можете сделать PATH
переменную и связанный с ней path
массив уникальными, используя
typeset -U -g PATH path
Переменные тогда будутоставатьсяуникальный благодаря этой команде.
Чтобы добавить несколько путей:
path=( /new/path1 /new/path2 $path )
Чтобы добавить несколько путей:
path=( $path /new/path1 /new/path2 )
или,
path+=( /new/path1 /new/path2 )
Значение переменной PATH
будет обновлено соответствующим образом.
Вы можете захотеть сделать это в вашем $ZDOTDIR/.zprofile
файле, который автоматически генерируется любой zsh
оболочкой входа. Делать это в вашем $ZDOTDIR/.zshenv
файле было бы ненужно, так как этот файл генерируетсялюбой типпризыва zsh
(и поэтому его следует делать очень коротким, если это вообще необходимо; я, ZDOTDIR=$HOME/.zsh
например, просто вставил туда).
Обратите внимание, что PATH
это уже переменная среды, поэтому ее повторный экспорт не имеет смысла.
решение2
Файл /etc/zprofile
используется /usr/libexec/path_helper
для установки значений по умолчанию PATH
, и у нас нет его исходного кода.
Ниже показано, как изменить данные для пользователя PATH
:
Создайте/отредактируйте ~/.zprofile
и добавьте следующий контент:
# append to PATH
export PATH="$PATH:.../to/target/bin"
# prepend to PATH
export PATH=".../to/target/bin:$PATH"
# remove duplicate in PATH
typeset -U PATH
решение3
Следующие шаги покажут вам, как изменить систему PATH
:
PATH
Создайте файл с соглашением об именовании: priority-appname (например, «20200418-vscode», я просто использую дату, чтобы сделать приоритет уникальным). Затем сохраните в нем путь, который вы хотите добавить .Переместите этот файл в
/etc/paths.d/
, готово.
Примечание1:Не забудьте создать новый сеанс терминала, чтобы увидеть изменения в echo $PATH
.
Примечание 2: только этот методдобавляетВаш путь к PATH
.