Как запустить интерактивный 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