I följande avsnitt beskrivs beteendeförändringar i vissa kommandon och standarder i OS för Solaris 10.
OS för Solaris 10 innehåller Bash 2.0.5b. I det här skalet exporteras inte längre följande variabler automatiskt till miljön:
HOSTNAME
HOSTTYPE
MACHTYPE
OSTYPE
Det här nya beteendet gäller även om skalet tilldelar värden för de här variablerna.
Åtgärd: Exportera variablerna manuellt.
Beteendet för /usr/bin/ln har ändrats så att det följer alla standarder från SVID3 till XCU6. Om du länkar till en befintlig målfil med kommandot ln utan alternativet -f, upprättas inte länken. I stället skrivs ett diagnostiskt meddelande till standardfelet och kommandot fortsätter att länka alla återstående källfiler. Slutligen avslutas kommandot ln med ett felvärde.
Om det exempelvis finns en b-fil, genererar syntaxen ln a b följande meddelande:
ln: b: Filen finns redan |
Det här beteendet påverkar alla befintliga skalskript och program som innehåller kommandot ln utan alternativet -f. Skript som brukade fungera kanske inte gör det längre i OS för Solaris 10.
Åtgärd: Använd alternativet -f tillsammans med kommandot ln. Om du har befintliga skript som kör länkverktyget, bör du se till att ändra dem så att de följer kommandots nya beteende.
I OS för Solaris 10 har tcsh uppgraderats till version 6.12. Den här versionen accepterar inte längre miljövariabler vars namn innehåller snedstreck eller likhetstecken. Skript som innehåller setenv-rader och som fungerar i tidigare Solaris-versioner kan generera fel i den aktuella versionen av Solaris 10. Följande felmeddelande visas:
setenv: Syntaxfel |
Mer information finns i direkthjälpen för tcsh för OS för Solaris 10.
Åtgärd: Använd inte snedstreck eller likhetstecken i namn på miljövariabler.
Program som byggts strikt efter C-standarden påverkas av beteendeförändringar av vissa biblioteksfunktioner. Ett exempel på detta är program som kompilerats med kompileringsläget cc -Xc eller c89. Beteendet har ändrats för följande biblioteksfunktioner:
fgetc()
fgets()
fgetwc()
fgetws()
getc()
getchar()
gets()
getwc()
getwchar()
getws()
En formell tolkning av 1990 C-standarden kräver att efter att ett EOF-villkor (End Of File) har angetts, returneras inga fler data från filen vid efterföljande åtgärder. Undantaget är om filpekaren positioneras om eller felet och EOF-flaggor explicit tas bort från programmet.
Beteendet för alla andra kompileringslägen är oförändrade. Gränssnitten kan läsa ytterligare, nyskrivna data från strömmen efter att EOF-indikatorn har angetts.
Åtgärd: Anropa fseek() eller clearerr() i strömmen om du vill att ytterligare data ska läsas efter att EOF-villkoret har rapporterats i strömmen.
På grund av större användar-ID:n, processor-ID:n och kumulativ exekveringstid, har kolumnerna för kommandot ps breddats. Kundskapade skript bör inte anta fasta utdatakolumner.
Åtgärd: Skripten bör använda alternativet -o i kommandot ps.
Mer information finns i direkthjälpen för ps(1).
Kommandot ping -v misslyckas när kommandot används för adresser som använder IPv6 (Internet Protocol version 6). Följande felmeddelande visas:
ping: setsockopt IPV6_RECVRTHDRDSTOPTS Ogiltigt argument |
Åtgärd: Ingen. Om du vill hämta samma ICMP-paketinformation som ping -v tillhandahåller, använder du kommandot snoop.