В чем разница между `-h` и `-L` в условных выражениях bash?

Связанные клоны используют снимок диска родительской ВМ, изменения в родительской виртуальной машине записываются на дельта-диск после клонирования. Поэтому, если вы что-то измените в родительском объекте после клонирования, изменения не будут доступны для связанных клонов. Это очень похоже на снимки в vmware

.

Документы по рабочим станциям VMware содержат хорошее объяснение различий между полными и связанными клонами, я советую вам также ознакомиться с ними.

A linked clone is made from a snapshot of the parent.

https://www.vmware.com/support/ws5/doc/ws_clone_typeofclone.html

3
11.12.2019, 00:06
1 ответ

Нет никакой разницы. Описание POSIX обеих опций гласит

True if pathname resolves to an existing directory entry for a symbolic link. False if pathname cannot be resolved, or if pathname resolves to an existing directory entry for a file that is not a symbolic link. If the final component of pathname is a symbolic link, that symbolic link is not followed.

Как вы сказали, причина иметь обе, скорее всего, поддерживает наиболее распространенный выбор, сделанный историческими реализациями утилит testи [.

Что касается testи [, встроенных -в утилиты bash, они оба функционируют одинаково и всегда выполнялись. Самый старый доступный исходный код bashв текущем репозитории Git имеет одинаковую формулировку как для (выпуска 2.04, от 1991 года ).

В реальной реализации 1991 года есть даже комментарий:

    case 'L':           /* Same as -h  */
    case 'h':           /* File is a symbolic link? */
7
27.01.2020, 21:17

Теги

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