QNX (Neutrino 6.5.0 )использует в качестве оболочки реализацию ksh с открытым исходным кодом. Многие предоставленные сценарии, включая сценарии запуска системы, используют такие конструкции, как
if ! test /dev/slog -ef /dev/slog; then
# do something
fi
чтобы проверить, существует ли менеджер ресурсов в файловой системе. Я искал и смог найти только очень скучные объяснения, что -ef
проверяет, действительно ли два параметра являются одним и тем же файлом. Поскольку указанное имя файла одно и то же, кажется, что оно просто сводится к проверке существования файла.
Я проверил поведение test -a
и test -e
(. оба, кажется, проверяют наличие файла любого типа в соответствии с различными документами, которые я читал ), и они, кажется, также работают.
Есть ли разница в проверках между -ef
и -a
/-e
? Является ли использование -ef
попыткой защититься от состояния гонки при существовании файла?