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.
При запуске 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'
Вы можете получить новый файл, который будет работать для некоторых изменений, возможно, включая обновление переменной PATH (в зависимости от других строк ). Однако при его поиске просто снова запустится .zshrc
, и вы можете выполнить неожиданные повторяющиеся команды. Более того, если бы были удалены строки из старого .zshrc
, то они бы не "стерлись" из сессии.
Самый простой способ — просто выйти из системы и войти снова. Вам нужно будет сделать это только для сеанса терминала, а не для всей среды рабочего стола.
Изменения в файлах инициализации оболочки будут активны в следующей оболочке, которую вы запускаете, например, если вы открываете новый графический терминал или выходите из системы и снова входите в нее. Если вы внесли изменения, которые должны каким-то образом повлиять на среду вашего рабочего стола (, я не знаю, что это может быть за изменение ), тогда потребуется выйти и снова войти в систему.
Вы могли бы получить файл с помощью. /path/to/filename
(. ~/.zshrc
в вашем случае )или запустить новый сеанс оболочки из командной строки с помощью zsh
, но это почти никогда не является хорошей идеей, поскольку может иметь нежелательные последствия, такие как добавление повторяющихся путей к переменной $PATH
или запуск дополнительных процессов ssh-agent
или что-то еще, что вы можете делать в этом файле. Изменения также не будут видны программам, которые уже были запущены.
Для такого изменения, как простое безусловное добавление к $PATH
, вы, очевидно, можете просто запустить добавленную команду в текущей оболочке:
$ path+=/usr/local/openjdk12/bin
Это позволит (вzsh
)добавить каталог /usr/local/openjdk12/bin
в конец$PATH
(и в конец массива $path
вzsh
)в текущем сеансе оболочки. Опять же, это изменение на $PATH
не повлияет на уже запущенные процессы.