Esiste un limite di caratteri su quanto può durare la tua variabile PATH su macOS? Oppure esiste un limite in termini di quantità di file binari a cui puoi fare riferimento nel tuo percorso?
Esiste un limite di caratteri su quanto può durare la tua variabile PATH su macOS? Oppure esiste un limite in termini di quantità di file binari a cui puoi fare riferimento nel tuo percorso?
Risposte:
La dimensione di una variabile è soggetta ai limiti dell'hardware su cui viene eseguita, detto che una variabile potrebbe essere milioni di byte. Ma una variabile d'ambiente, come PATH, è soggetta a limitazioni di sistema (ARG_MAX) poiché l'intero ambiente viene passato alla chiamata di sistema- execve
. Quindi, una stima ragionevole della dimensione massima di una variabile d'ambiente sarebbe, i byte usati nell'ambiente attuale env | wc -c
, oltre a un ragionevole buffer di byte necessario per eseguire comandi nella shell: 2048 byte a 4096 byte, sottratti dal numero massimo di byte consentiti in un argomento - 262144 byte. L'usabilità di una variabile d'ambiente di queste dimensioni è un altro problema.
La shell inizia la sua ricerca nel percorso più a sinistra elencato nella variabile PATH, quindi continua al successivo e al successivo fino a quando non trova il comando che hai emesso. La shell mantiene anche una registrazione di quel comando, quindi non è necessario cercare nuovamente la variabile PATH nella sessione corrente. Questa è un'indicazione che la ricerca del PERCORSO è costosa. Pertanto, la dimensione massima della variabile PATH dovrebbe essere la più piccola possibile.
Fondamentalmente non raggiungerai mai il limite se hai qualche tipo di PERCORSO ragionevolmente sano.
Ho appena provato ad avere una variabile PATH che è lunga 96 kB (irragionevolmente lunga). Funziona su High Sierra senza problemi.
Se lo passo a 128 kB, comincio ad avere problemi nell'avvio dei comandi poiché falliranno a causa del grande ambiente. L'ambiente PATH è comunque memorizzato.