Die beste Antwort ist, zu versuchen, was auch immer die "Test" -Mannseite auf Ihrem System sagt. Wenn das zu funktionieren scheint, suchen Sie nicht weiter. Wenn es jedoch nicht zu funktionieren scheint oder wenn Sie Fragen zu obskureren Optionen zum Testen haben, sollten Sie auch die Manpage für Ihre Shell überprüfen, um zu sehen, ob 'expr' oder '[' eingebaute sind. In diesem Fall verwendet die Shell möglicherweise eine interne Implementierung, anstatt das Dienstprogramm expr aus/bin aufzurufen. Unter Solaris habe ich überprüft, dass ksh93 [als eingebaut behandelt (obwohl die Manpage dies nicht zu sagen scheint). Von der Fachwerkausgabe können Sie sehen, dass ksh den Befehl expr für [nicht ausführt.
% 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