Обычно эффект, который вы упоминаете, возникает из-за того, что ядро меняет видеорежим во время загрузки. В то же время он может загрузить новый шрифт, чтобы компенсировать (или использовать увеличенное разрешение).
Вот несколько статей, в которых обсуждается это:
Это был бы первый раз, когда я вижу, что кто-то жалуется на то, что (мы чаще видим, что люди жалуются на то, что они не выполняют разбиение слов при расширении параметра ).
Большинство людей ожидают
echo $file
для вывода содержимого переменной $file
и раздражаются, когда такие оболочки, как bash
, не выполняют (поведение, унаследованное от оболочки Bourne, к сожалению, не исправленное ksh и заданное POSIX для sh
интерпретатор ), и это вызывает множество ошибок и уязвимостей в системе безопасности, поэтому вам нужно заключать в кавычки все переменные в этих оболочках.
См., например,:Последствия для безопасности, если забыли заключить переменную в кавычки в оболочках bash/POSIX
Я вижу, что вы тоже этого ожидаете, когда пишете echo $0
, а не echo "$0"
.
zsh
исправил это. По умолчанию при расширении параметра он не выполняет ни подстановки, ни разделения слов. Вам нужно запросить их явно:
echo $=file
:выполнить разбиение слов echo $~file
:выполнить подстановку echo $=~file
:выполнить оба Или вы можете включить параметры globsubst
и shwordsplit
, чтобы получить то же поведение, что и в Bourne -, например, в оболочках (эти два параметра включены, когда zsh
вызывается как sh
для sh
совместимость ), но я бы не рекомендовал, если вам не нужно zsh
интерпретировать код, написанный для другой оболочки (, и даже в этом случае имеет смысл интерпретировать этот код в эмуляции sh
в локальный контекст сemulate -L sh
).
Здесь имя вашей переменной file
в
file=*
вводит в заблуждение, если вы собираетесь расширять его после расширения¹
filename_pattern=*
будет иметь больше смысла. Если вам нужна переменная, содержащая имена всех не -скрытых файлов в текущем каталоге, вы должны сделать:
files=(*)
или:
files=(*(N))
чтобы это назначение не терпело неудачу, если в текущем каталоге нет не -скрытого файла.
То есть используйте назначение переменной массива . Это(file=(*)
)будет работать так же, как в bash
или ksh93
, mksh
или yash
, за исключением того, что zsh
не имеет другого недостатка оболочки Борна, из-за которого шаблон остается нераскрытым, когда есть не совпадает.
¹Обратите внимание, что *
— вполне допустимое имя для файла в Unix-подобной -системе. Меня утешает то, что rm -f -- $file
удаляет файл, имя которого хранится в $file
, даже если этот файл называется *
.