La sezione seguente descrive le modifiche nel comportamento di alcuni comandi e standard di Solaris 10.
Solaris 10 include la shell Bash 2.0.5b. Questa shell non esporta più automaticamente le seguenti variabili nell'ambiente:
HOSTNAME
HOSTTYPE
MACHTYPE
OSTYPE
Questo nuovo comportamento si verifica anche se la shell assegna valori predefiniti a queste variabili.
Soluzione: esportare queste variabili manualmente.
Il comportamento di /usr/bin/ln è stato modificato in conformità con tutti gli standard da SVID3 a XCU6. Se si utilizza il comando ln senza l'opzione -f per creare un collegamento a un file di destinazione esistente, il collegamento non viene stabilito. Un messaggio diagnostico viene inviato all'output standard per i messaggi di errore e il comando procede collegando eventuali altri file. Infine, il comando ln termina con un valore di errore.
Se ad esempio il file b esiste, la sintassi ln a b genera il messaggio seguente:
ln: b: Il file esiste |
Questo nuovo comportamento ha effetto sugli script delle shell o sui programmi esistenti che includono il comando ln senza l'opzione -f. Alcuni script che operavano senza problemi possono generare un errore in Solaris 10.
Soluzione: usare l'opzione -f con il comando ln. Se si dispone di uno script che esegue il programma ln, modificarlo in modo conforme al nuovo comportamento del comando.
In Solaris 10, la shell tcsh è stata aggiornata alla versione 6.12. Questa versione non accetta più le variabili d'ambiente il cui nome contiene un trattino o un segno di uguale. Gli script che contengono righe setenv e che nelle precedenti versioni di Solaris funzionavano correttamente possono generare errori in Solaris 10. Viene visualizzato il seguente messaggio di errore:
setenv: Errore di sintassi |
Per maggiori informazioni, vedere la pagina man di tcsh per Solaris 10.
Soluzione: non usare trattini o segni di uguale nei nomi delle variabili d'ambiente.
Le applicazioni create in stretta conformità con gli standard C sono interessate dalle modifiche al comportamento di alcune funzioni delle librerie. Un esempio è rappresentato dalle applicazioni compilate in modalità cc -Xc o c89. Le modifiche al comportamento riguardano le seguenti funzioni delle librerie:
fgetc()
fgets()
fgetwc()
fgetws()
getc()
getchar()
gets()
getwc()
getwchar()
getws()
Un'interpretazione formale dello standard C 1990 richiede che, dopo l'impostazione di una condizione di fine file, il file non restituisca altri dati nelle successive operazioni di input. È prevista un'eccezione quando il puntatore del file viene riposizionato o quando i flag di errore e di fine file vengono esplicitamente cancellati dall'applicazione.
Il comportamento rimane invariato per tutte le altre modalità di compilazione. In particolare, le interfacce possono leggere dal flusso i dati aggiuntivi scritti dopo l'impostazione dell'indicatore di fine file.
Soluzione: chiamare fseek() o clearerr() nel flusso per continuare la lettura di dati aggiuntivi dopo la rilevazione della condizione EOF.
A causa della maggiore lunghezza degli UID, degli id dei processori e del tempo di esecuzione cumulativo, le colonne del comando ps sono state allargate. Gli script non devono perciò basarsi sull'uso di colonne di output a larghezza fissa.
Soluzione: negli script, usare l'opzione -o del comando ps.
Per maggiori informazioni, vedere la pagina man ps(1).
Il comando ping -v non riesce quando viene applicato a indirizzi che utilizzano la versione 6 del protocollo Internet (IPv6). Viene visualizzato il seguente messaggio di errore:
ping: setsockopt IPV6_RECVRTHDRDSTOPTS Invalid argument |
Soluzione: nessuna. Per ottenere le stesse informazioni sui pacchetti ICMP restituite dal comando ping -v, usare il comando snoop.