Ответы:
В bash, в следующем порядке:
GLOBIGNORE=.
shopt -u dotglob
Когда установлен GLOBIGNORE,. и ... автоматически игнорируются, поэтому вам не нужно устанавливать их в GLOBIGNORE, но если вам нечего игнорировать, у вас не будет ничего, чтобы установить его.
Каждый раз, когда вы устанавливаете для GLOBIGNORE ненулевое значение, bash включает эту опцию dotglob, поэтому вам нужно будет впоследствии отключить ее; в противном случае bash будет расширяться *и включать файлы, начинающиеся с точки.
.и, ..но не foo/.и foo/... Вы можете использовать GLOBIGNORE=.:*/.:*/..это для работы с путевыми именами.
В незнакомой системе, где у меня слишком мало времени для проверки используемых настроек (например, GLOBIGNORE), я использую следующую надежную схему:
command .??*
.и ..независимо от окружающей среды..a
dotglobвключить, поэтому настройкаGLOBIGNOREзвучит идеально.