] Предел находится в ядре и равен суммарному размеру аргументов и окружения, переданных системному вызову []execve()[
], используемому для выполнения команды. Можно разделить ее на несколько вызовов.[
]To []gunzip[
] all the []. gz[
] файлов в текущем каталоге:[
]с []zsh[
]:[
autoload zargs # best in ~/.zshrc
zargs ./*.gz -- gunzip
]
[]С помощью []ksh93[
]:[
command -x gunzip ./*.gz
]
[]GNUly:[
] [printf '%s\0' *.gz | xargs -r0 gunzip
]
[]POSIXly (и с помощью []gunzip[
]):[
find . ! -name . -prune -name '*.gz' -exec gunzip {} +
]
[](остерегайтесь, что вы также распакуете спрятанное []. gz[
] файлы)[
]Или вы можете увеличить этот лимит на некоторых системах. На последних версиях Linux:[
] [ulimit -s unlimited
gunzip ./*.gz
] Что ж, работать с функцией init в функции оболочки не так уж и сложно. Например:
fn(){
echo first time called\!
fn(){
echo not the first time called\!
}
}
fn; fn; fn
... напечатает ...
first time called!
not the first time called!
not the first time called!
Вы также можете определить псевдонимы оболочки в функции, исходных файлах или в любом другом виде - вы можете сделать довольно что угодно с текущее состояние оболочки, которое вы также можете сделать в приглашении , за исключением того, что влияет на его позиционные параметры (хотя даже это можно обойти с помощью псевдонима
es) .
Так что может быть хорошей идеей, чтобы исходники ваших установок были как .fn.name
(или что угодно) файлов, а затем вызвать их один раз в файле rc - где первоначальный вызов функции обрабатывает все свои собственные настройки по мере необходимости, а затем переопределяет себя для всех последующих вызовов.
Или, как некоторые оболочки работают с автозагрузкой , вы можете создать однострочную функцию, которая определяется каждый раз, когда rc-файл читается как:
printf '%b' '[ -f ~/.fn_name ] &&\n\tfn_name(){ . ~/.fn_name; }\n' >>~/.bash.rc
... и внутри ] ~ / .fn_name
...
fn_name(){ : now redefine the function; }
... таким образом fn_name
почти не будет использовать какое-либо состояние оболочки, пока не будет вызван впервые, это не будет загромождать .bash.rc
ужасно, и им легко управлять.
Однако было бы проще поместить все эти типы в один файл ~ / .fn
и получить его из основного rc, а затем извлекать из него каждого отдельного пользователя. .