Этот вопрос, конечно, связан, но отличается от вопроса об исполнении команды .
Решения этих вопросов включают либо запуск подоболочки - что невозможно из-за необходимости выбора источника вместо выполнения, - либо изменение вашего ~/.zshrc
, что невозможно, если вы хотите распространить скрипт, который это делает. (Или, скорее, изменение пользовательских конфигурационных файлов - это то, что вы просто не делаете)
Проблема в том, что в zsh нет такого --init-file
параметра, как у bash (впервые, когда я увидел bash с функцией, которой не обладает zsh)
Я дам ответ на мой вопрос, но он ужасно уродлив, и я надеюсь, что кто-то знает хитрость, чтобы обойти его!
command-line
shell
zsh
летающие овцы
источник
источник
source
команду для получения соответствующего файла). Я думаю, что мне не хватает обоснования для вопроса.modules
( modules.sourceforge.net )?$GOPATH
и установкаcd
там). Честно говоря, я очень удивлен, что этого не существуетОтветы:
Этот сайт говорит нам, что есть
$ZDOTDIR
, что делает возможным очень уродливое решение:/distdir/my-cmd
:Используйте специфичные для оболочки способы замены файлов инициализации или безнадежно сбои.
/distdir/.zshrc
:Именованные
.zshrc
, так как имена жестко закодированы в zsh, но bash может быть передан произвольно названному файлу через--init-file
. Можно также назвать это, напримерour_stuff.sh
, и создать,.zshrc
который содержит только. ./our_stuff.sh
.Поскольку мы на самом деле не хотим заменять файлы инициализации, а добавляем другие, мы должны тщательно воссоздать встроенную последовательность их получения.
источник
.zshrc
файл, когда запускаете экземплярbash
?bash
оболочка входа (интерактивная или нет) всегда выполняется,/etc/profile
если она существует. Я думаю, что это единственный глобальный файл запуска дляbash
(что-то подобное/etc/bashrc
может быть предоставлено дистрибутивом вашей ОС и получено из предоставленного по умолчанию.bashrc
или/etc/profile
, ноbash
само по себе его не ищет)..zshrc
файлу. Я хочу, чтобы тот же файл был получен в bash, если пользователь использует bash, и в zsh, если он использует zsh. Bash принимает--init-file
, zsh просто a$ZDOTDIR
, в котором он ищет конкретные, жестко закодированные имена файлов. Поэтому я дал файлу одно из тех жестко запрограммированных имен, потому что bash не важно, как он называется. Понял? :)