Hayır, esas olarak, sistemlerin varsayılan olarak uygun olmasını gerektirmemesi veya yalnızca POSIX standardına uymasını gerektirmez (herhangi bir standardın hariç tutulmasına).
Örneğin, Solaris (sertifikalı uyumlu sistemi) kendi programları için geriye dönük uyumluluk seçti /binbu gizli yollarla davranırlar ve ayrı yerlerde (POSIX uyumlu yarar sağlamak açıklar neden /usr/xpg4/bin, /usr/xpg6/bin... XPG farklı sürümleri için (şimdi birleşti (POSIX) standardına göre, aslında Solaris'teki isteğe bağlı bileşenlerin bir parçası olanlar).
Hatta shiçinde olması garanti edilmez /bin. Solaris'te, /bin/shSolaris 10'a kadar Bourne kabuğu (yani POSIX uyumlu değil), Solaris 11'de ksh93 (eskiden POSIX uyumlu değil, pratikte daha fazlası /usr/xpg4/bin/sh).
C'den, exec*p()POSIX ortamında olduğunuzu (özellikle PATHçevre değişkeniyle ilgili olarak ) kullanabilir ve varsayabilirsiniz .
Ayrıca PATHortam değişkenini de ayarlayabilirsiniz
#define _POSIX_C_SOURCE=200809L /* before any #include */
...
confstr(_CS_PATH, buf, sizeof(buf)); /* maybe append the original
* PATH if need be */
setenv("PATH", buf, 1);
exec*p("ps"...);
Veya derleme zamanında çalıştırmak istediğiniz POSIX yardımcı programlarının yolunu belirleyebilir (GNU olanlar gibi bazı sistemlerde POSIXLY_CORRECTuyumluluk için değişken ayarlamak gibi daha fazla adıma ihtiyacınız olduğunu göz önünde bulundurarak ).
Gibi şeyler de deneyebilirsiniz:
execlp("sh", "sh", "-c", "PATH=`getconf PATH`${PATH+:$PATH};export PATH;"
"unset IFS;shift \"$1\";"
"exec ${1+\"$@\"}", "2", "1", "ps", "-A"...);
Bir var umuduyla shiçinde $PATHo Bourne benzeri, ayrıca var ki bir olduğunu, getconfve POSIX Sen ilgilenen in sürümü için biri olduğunu.
/bin, yani/bin/edkullanışlı olmalıdır ed kurulu ise. Şu an bulamıyorum, ancak LSB'nin buna bağlı olduğunu biliyorum ve bunu mantıksal olarak kullanarak hata raporlarını başarıyla savundum, bu yüzden en azından bir noktada doğru olması gerekirdi. (Ya da POSuX'ten başka bir şeydi ve ben haksızlık ediyorum, ama gerisi doğrudur.)