Как применить изменения к файлу .zshrc после редактирования?

I can exclude using: GLOBIGNORE='sub1' before of ls, but what happens if I have more directories with differents names?

Из справочного руководства Bash , GLOBIGNORE — это:

A colon-separated list of patterns defining the set of filenames to be ignored by filename expansion. If a filename matched by a filename expansion pattern also matches one of the patterns in GLOBIGNORE, it is removed from the list of matches. The pattern matching honors the setting of the extglob shell option.

6
28.07.2019, 16:52
3 ответа

Перезапустить zsh

При запуске Zsh читается как .zshrc. Вам не нужно выходить из системы и снова входить в нее. Просто закройте терминал и откройте новый, и вы получите новый .zshrcв этом новом терминале. Но вы можете сделать это более прямым. Просто скажите zsh перезапуститься:

exec zsh

Если вы запустите это в приглашении zsh, это заменит текущий экземпляр zsh новым, работающим в том же терминале. Новый экземпляр имеет те же переменные среды , что и предыдущий, но имеет новую оболочку (, не -экспортированные )переменные, и начинает новую историю (, поэтому он буду смешивать команды с других терминалов в типичных конфигурациях ). Любые фоновые задания отвергаются.

Перечитать.zshrc

Вы также можете указать zsh повторно -прочитать .zshrc. Преимущество этого заключается в сохранении истории оболочки, переменных оболочки и сведений о фоновых заданиях. Но в зависимости от того, что вы введете в .zshrc, это может сработать, а может и не сработать. Re -чтение .zshrcзапускает команды, которые могут не работать или работать плохо, если вы запустите их дважды.

. ~/.zshrc

Существует слишком много вещей, которые вы можете сделать, чтобы перечислить все, что можно и что нельзя вводить .zshrc, если вы хотите запустить его дважды. Вот только некоторые распространенные проблемы:

  • Если вы добавляете к переменной (, например. fpath+=(~/.config/zsh)или chpwd_functions+=(my_chpwd)), это снова добавляет одни и те же элементы, что может быть проблемой, а может и не быть.
  • Если вы определяете псевдонимы, а также используете то же имя в качестве команды, команда теперь будет запускать псевдоним. Например, это работает :
    function foo { … }
    alias foo='foo --common-option'
    
    Но это не так, потому что при втором получении файла foo ()расширит псевдоним :
    foo () { … }
    alias foo='foo --common-option'
    
  • Если вы исправляете существующую функцию zsh, теперь вы будете исправлять свою собственную версию, что, вероятно, создаст беспорядок.
  • Если вы сделаете что-то вроде «поменять местами привязки двух клавиш», это не даст желаемого результата во второй раз.
19
27.01.2020, 20:21

Вы можете получить новый файл, который будет работать для некоторых изменений, возможно, включая обновление переменной PATH (в зависимости от других строк ). Однако при его поиске просто снова запустится .zshrc, и вы можете выполнить неожиданные повторяющиеся команды. Более того, если бы были удалены строки из старого .zshrc, то они бы не "стерлись" из сессии.

Самый простой способ — просто выйти из системы и войти снова. Вам нужно будет сделать это только для сеанса терминала, а не для всей среды рабочего стола.

4
27.01.2020, 20:21

Изменения в файлах инициализации оболочки будут активны в следующей оболочке, которую вы запускаете, например, если вы открываете новый графический терминал или выходите из системы и снова входите в нее. Если вы внесли изменения, которые должны каким-то образом повлиять на среду вашего рабочего стола (, я не знаю, что это может быть за изменение ), тогда потребуется выйти и снова войти в систему.

Вы могли бы получить файл с помощью. /path/to/filename(. ~/.zshrcв вашем случае )или запустить новый сеанс оболочки из командной строки с помощью zsh, но это почти никогда не является хорошей идеей, поскольку может иметь нежелательные последствия, такие как добавление повторяющихся путей к переменной $PATHили запуск дополнительных процессов ssh-agentили что-то еще, что вы можете делать в этом файле. Изменения также не будут видны программам, которые уже были запущены.

Для такого изменения, как простое безусловное добавление к $PATH, вы, очевидно, можете просто запустить добавленную команду в текущей оболочке:

$ path+=/usr/local/openjdk12/bin

Это позволит (вzsh)добавить каталог /usr/local/openjdk12/binв конец$PATH(и в конец массива $pathвzsh)в текущем сеансе оболочки. Опять же, это изменение на $PATHне повлияет на уже запущенные процессы.

5
27.01.2020, 20:21

Теги

Похожие вопросы