Лучший ответ - попробовать то, что написано в справочной странице «test» в вашей системе. Если это похоже на работу, не смотрите дальше. Однако, если кажется, что он не работает или у вас есть вопросы о более непонятных опциях для тестирования, вам также следует проверить страницу руководства для вашей оболочки, чтобы увидеть, являются ли 'expr' или '[' встроенными. В этом случае оболочка может использовать внутреннюю реализацию вместо вызова утилиты expr из / bin. На Солярисе я проверил, что ksh93 рассматривает [как встроенный файл (хотя страница руководства, похоже, так не говорит). Из вывода фермы вы можете видеть, что ksh не запускает команду expr для [.
% truss -f -texec /bin/ksh '[ -h /home ]'
26056: execve("/usr/bin/ksh", 0x08047708, 0x08047714) argc = 2
26056: execve("/usr/bin/ksh93", 0x08047708, 0x08047714) argc = 2
26056: execve("/usr/bin/amd64/ksh93", 0x08047704, 0x08047710) argc = 2
% truss -f -texec /bin/ksh '/bin/expr -h /home ]'
26058: execve("/usr/bin/ksh", 0x08047700, 0x0804770C) argc = 2
26058: execve("/usr/bin/ksh93", 0x08047700, 0x0804770C) argc = 2
26058: execve("/usr/bin/amd64/ksh93", 0x080476FC, 0x08047708) argc = 2
26058: execve("/bin/expr", 0x00418360, 0x00418398) argc = 4