Запустите интерактивный zsh без запуска каких-либо файлов конфигурации, таких как .zshrc

Запустите интерактивный zsh без запуска каких-либо файлов конфигурации, таких как .zshrc

Как запустить интерактивный zsh без запуска каких-либо файлов конфигурации, таких как .zshrc?

Я попробовал zsh -d -f -i, но приглашение было таким же, как указано в ~/.zshrc, так что эти варианты, похоже, не сработали.

Я использую zsh 5.8 на macOS 10.15.4.

решение1

zsh -d -f -iверно для этого, хотя -d(подразумевается -f) и -i( zshработает в интерактивном режиме в любом случае, когда не указан скрипт/код для запуска в командной строке, а stdin является терминалом) было бы излишним.

Обратите внимание, однако, что это /etc/zsh/zshenvвсе еще интерпретируется, и я не думаю, что есть способ это отключить. info zsh RCSПодробности см. здесь.

В вашем случае PS1был унаследован от среды. PS1— одна из многих переменных среды, которые также могут настраивать оболочку.

Обратите внимание, что в самых ранних оболочках не было rc-файла, настройка выполнялась только с помощью переменных окружения (которые вы задавали в ~/.profileили ~/.login, интерпретировались оболочкой входа).

Для настройки оболочки используется большое количество переменных. Смотрите:

info zsh 'Parameters Used By The Shell'

для получения подробной информации (однако следует отметить, что для некоторых из них значение, найденное в среде, игнорируется).

Некоторые из этих переменных среды, такие как HOME, PATH, SHELL, COLUMNS, LANG, LC_*используются многими другими программами, помимо оболочки, поэтому не стоит отключать их или использовать env -iдля отключения их всех.

Большинство переменных, перечисленных в этой документации, вы не захотите помещать в среду, а ~/.zshrcвместо этого объявите их в своей оболочке как обычные переменные. PS1— одна из них. PS1используется в качестве переменной настройки приглашения во многих оболочках, но синтаксис сильно различается в зависимости от оболочки.

К сожалению, некоторые дистрибутивы GNU/Linux устанавливают и экспортируют PS1переменную в каком-либо файле запуска системы и определяют ее со значением, специфичным для синтаксиса оболочки bash(оболочки GNU), что означает, что если вы запустите любую оболочку, отличную от bashсреды с этим значением PS1, вы получите мусорное приглашение.

Чтобы запустить оболочку, PS1удаленную от среды, можно сделать следующее:

(unset -v PS1; zsh -f)

В некоторых envреализациях вы также можете сделать следующее:

env -u PS1 zsh -f

Чтобы запустить его без переменной среды (хотя, как отмечено выше, это, вероятно, не очень хорошая идея):

env -i zsh -f

Связанный контент