Что относительно простой символьной ссылки?
ln -s /etc/profile /etc/zsh/zprofile
Можно также добавить что-то вроде этого при необходимости в некоторой условной инициализации:
#Determine our shell without using $SHELL, which may lie
shell="sh"
if test -f /proc/mounts; then
case $(/bin/ls -l /proc/$$/exe) in
*bash) shell=bash ;;
*dash) shell=dash ;;
*ash) shell=ash ;;
*ksh) shell=ksh ;;
*zsh) shell=zsh ;;
esac
fi
Вы видели это, superuser.com по подобной проблеме? Связанное сообщение в блоге говорит (и я цитирую почти полное сообщение):
/usr/libexec/path_helper
, то, которое Mac OS X выполняет каждый раз, когда оболочка входа в систему создается, действительно медленно. (В частности, я думаю, что замедление находится в[[ "$NEWPATH" = *(*:)${p}*(:*) ]]
.) Мои Окна терминала занимали приблизительно четыре секунды для открытия. Путем удаления файлов в/etc/paths.d и помещения их содержания непосредственно в мой $PATH в .bash_profile, Окна терминала теперь загружаются немедленно.
Обсуждение также включает ссылку на замену, записанную в Perl, github.com/mgprot/path_helper
(никакая идея о ее скорости, tho).
Править: Из комментариев вышеупомянутого сообщения в блоге - патч к path_helper
это должно быть другим способом устранить проблему.
Я знаю то, что следует, не оказывает влияния на скорость запуска нового терминала. Однако это укусило меня так, я думал, что вставил свои два цента.
Я думаю, что на самом деле сомнительно, что этот вызов (к path_helper) находится в zshenv (который называют для всех оболочек, не только входят в оболочки). Для других оболочек вызов path_helper находится вместо этого в/etc/profile или в/etc/csh.login - которые называют только для оболочек входа в систему.
Это становится проблемой при выполнении 'экранной' утилиты под zsh. 'экран' не запустит оболочку входа в систему, но скорее наследует среду от оболочки вызова. Но это все еще назовет/etc/zshenv и bu расширение path_helper.
Как это происходит, path_helper не только захватит кандидатов ПУТИ от/etc/paths.d, но если будет существующий ПУТЬ, когда это назовут, это будет активно управлять этим ПУТЕМ - это разделит компоненты, которые это нашло в/etc/paths и/etc/paths.d, и предварительно ожидайте их. Таким образом при помещении $ {ПОЛЬЗОВАТЕЛЬ} / мусорное ведро или/usr/local/bin во главе ПУТИ (потому что Вы хотите, чтобы Ваши собственные программы были найдены первыми), затем, это не будет работать в 'экранной' сессии.
Мое предложенное исправление к моей собственной проблеме должно переименовать/etc/zshenv к (в настоящее время не существующему)/etc/zprofile, но я волнуюсь, что это окажет вредные воздействия... могла бы быть причина, почему zsh реализация на OS X имеет этот вызов в/etc/zshenv, и это будет наверняка повреждено, когда следующая ОС выйдет, и я забуду все о своей фиксации.
Кто-либо еще замеченный это? Или имеют какие-либо мысли?
PATH
быть управляемым. Я думаю, что всегда мог поместить то, во главе чего я хочу PATH
. С другой стороны я обычно выполняю в этом мой .zshrc
файл, после path_helper уже сделал свою работу.
– Marnen Laibow-Koser
23.02.2015, 23:28
path_helper
был перемещен от /etc/zshenv
кому: /etc/zprofile
– shadowtalker
25.05.2016, 20:00
zshenv
лучше удалить его как можно скорее и/или переместиться в /etc/zprofile
.
– Antti Haapala
06.11.2017, 19:22