Per una risposta a un'altra domanda , è possibile impostare la variabile di ambiente non documentata (?) COPYFILE_DISABLE per impedire a molti dei programmi forniti dal sistema (incluso tar ) di dare un significato speciale ai ._*
membri dell'archivio. In particolare, impedirà loro di:
memorizzazione dei dati degli attributi estesi (inclusi i fork di risorse) nei ._*
membri dell'archivio
(ovvero non "inquinare" gli archivi creati su Mac OS X ma destinati ad essere utilizzati su altri sistemi), e
tentando di estrarre attributi o risorse estesi dai membri dell'archivio denominati come ._*
(ovvero non interpretare erroneamente i ._*
membri dell'archivio negli archivi da altri sistemi).
Il valore che usi per la variabile d'ambiente non è importante (può anche essere la stringa vuota). Valori come 0
e false
non riattivano la funzione. L'unica cosa che conta è se la variabile è impostata (devi "disinserirla" per riattivare la funzione).
È possibile utilizzare questa variabile su singoli comandi sfruttando l'abilità delle shell in stile Bourne ( sh , ksh , bash , zsh , ecc.) Di aggiungere un prefisso ai comandi con variabili d'ambiente aggiuntive.
COPYFILE_DISABLE=1 tar cf new.tar …
Se il problema si presenta più spesso, è possibile impostare ed esportare questa variabile in uno dei file di inizializzazione della shell.
# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Quando è necessario, è quindi possibile annullare l'impostazione della variabile per i singoli comandi.
(unset COPYFILE_DISABLE; tar cf somefile.tar …)
Su questo sistema Mac OS X 10.6, i seguenti comandi sembrano conoscere COPYFILE_DISABLE:
/usr/bin/tar
(un collegamento simbolico a bsdtar
)
/usr/bin/bsdtar
/usr/bin/gnutar
/bin/pax
COPYFILE_DISABLE è nato in Mac OS X 10.5. Se devi supportare 10.4, ha COPY_EXTENDED_ATTRIBUTES_DISABLE che funziona allo stesso modo.