Tilläggsinformation för Solaris 10

Solaris-kommandon och -standarder

I följande avsnitt beskrivs beteendeförändringar i vissa kommandon och standarder i OS för Solaris 10.

Bash 2.0.5b anger inte längre en del miljövariabler

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:

Det här nya beteendet gäller även om skalet tilldelar värden för de här variablerna.

Åtgärd: Exportera variablerna manuellt.

Det nya ln-verktyget kräver alternativet -f

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.

Den nya tcsh avvisar setenv-variabelnamn som använder snedstreck eller likhetstecken

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.

Beteendeförändring i EOF-villkoret för STDIO getc-familjen

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:

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.

Utdatakolumner för kommandot ps har breddats

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 fungerar inte på IPv6-adresser (4984993)

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.