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