Limite variabile percorso


3

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?


PERCORSO non fa riferimento ai binari - contiene le directory in cui potrebbero trovarsi i binari
Segna il

Scusate. Immagino che la mia domanda fosse più se c'è un limite di caratteri su quanto può essere lungo il tuo percorso.
Cody Rutscher,

Risposte:


1

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.


4

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.