Was ist die maximale Länge einer Befehlszeile in Mac OS X?

11

Ich generiere Modelle in Ruby on Rails, und einige dieser Tabellen enthalten sehr viele Spalten. Was ist die maximale Länge eines Befehls in Mac OS X?

DGM
quelle

Antworten:

15

Das Limit liegt nicht in Bash, sondern in Ihrem Betriebssystem. Es wird durch den Wert von ARG_MAXin Ihrem Betriebssystem definiert limits.h. Sie können den Wert durch Ausführen abrufen getconf ARG_MAX. Auf meinem OSX 10.5-Computer (und den meisten anderen BSD-Systemen) ist es 262144. Weitere Informationen zu diesem Grenzwert finden Sie hier .

Kamil Kisiel
quelle
1
Unter Solaris 10 ist es 1048320 - beide sind so groß, dass sie den Verstand verwirren, dass jemand davon ausgehen könnte.
Jonathan Leffler
Ausgezeichnet. Ich glaube ich war noch weg. lol
DGM
1
Ab macOS 10.12 liegt das Limit immer noch bei 262.144 (256 KB). Beachten Sie, dass das Limit nur beim Aufrufen externer Dienstprogramme gilt , nicht von integrierten Shell-Diensten. Vergleiche echo "$(printf "%$(getconf ARG_MAX)s")"mit/bin/echo "$(printf "%$(getconf ARG_MAX)s")"
mklement
High Sierra (10.13.1) hier noch 262144.
Siu Ching Pong -Asuka Kenji-
@JonathanLeffler Durch Durchsuchen einiger tausend Dateien wird diese Zahl schnell sehr klein.
Klarer
1

Es hängt von der Shell ab, aber als ich das letzte Mal ein Konfigurationsskript mit zsh auf 10.6 ausgeführt habe, waren es 65535 Zeichen.

Amok
quelle