Esiste un limite di caratteri su quanto può essere lunga la variabile PATH su macOS? O c'è un limite in termini di quantità di binari che puoi fare riferimento nel tuo percorso?
Esiste un limite di caratteri su quanto può essere lunga la variabile PATH su macOS? O c'è un limite in termini di quantità di binari che puoi fare riferimento nel tuo percorso?
La dimensione di una variabile è soggetta alle limitazioni dell'hardware su cui è eseguito, che detto, una variabile potrebbe essere milloni di byte. Ma una variabile di ambiente, come PATH, è soggetta alle limitazioni del 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 utilizzati nell'ambiente corrente - env | wc -c
, oltre a un ragionevole buffer di byte necessario per eseguire comandi nella shell - 2048 byte a 4096 byte, sottratti da il numero massimo di byte consentito in un argomento - 262144 byte. L'usabilità di una variabile d'ambiente di queste dimensioni è un altro problema.
La shell inizia la ricerca nel percorso più a sinistra elencato nella variabile PATH, quindi continua al successivo e al successivo finché non trova il comando che hai emesso. La shell tiene anche una registrazione di quel comando in modo che non debba cercare di nuovo la variabile PATH nella sessione corrente. Questa è un'indicazione che la ricerca di PATH è costosa. Quindi, la dimensione massima della tua variabile PATH dovrebbe essere la più piccola possibile.
In pratica non raggiungerai mai il limite se hai qualche tipo di PERCORSO ragionevolmente corretto.
Ho appena provato ad avere una variabile PATH lunga 96 kB (irragionevolmente lunga). Funziona su High Sierra senza problemi.
Se lo passo fino a 128 kB, comincio ad avere problemi nell'avvio dei comandi poiché falliscono a causa del grande ambiente. Tuttavia, l'ambiente PATH è memorizzato.
Leggi altre domande sui tag path