bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ulimit call lists invalid options


From: Robert Elz
Subject: Re: ulimit call lists invalid options
Date: Tue, 30 Jul 2019 12:09:34 +0700

The ulimit usage lists all the limits that bash supports.
Of those, the ones that actually work are the ones that your
system also supports.

On my system (like yours) ulimit -P and ulimit -k fail, as
while the system has pseudo tty's and kqueues, there are no
per process limits on how many can be allocated.

On the other hand:
        ulimit -T
        1024
        ulimit -b 
        unlimited

Further, when I rewrite your script into more rational shell
code (it is still not portable, and cannot be, as the format
of error messages is almost never defined ... different shells
produce different kinds of error messages) [modified script below]
I get:

jinx$ bash /tmp/S
ops=bcdefiklmnpqrstuvxPT
/tmp/S: line 14: ulimit: -e: invalid option
ulimit: usage: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
/tmp/S: line 14: ulimit: -i: invalid option
ulimit: usage: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
/tmp/S: line 14: ulimit: -k: invalid option
ulimit: usage: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
/tmp/S: line 14: ulimit: -q: invalid option
ulimit: usage: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
/tmp/S: line 14: ulimit: -r: invalid option
ulimit: usage: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
/tmp/S: line 14: ulimit: -x: invalid option
ulimit: usage: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]
/tmp/S: line 14: ulimit: -P: invalid option
ulimit: usage: ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]

so there are a whole lot more options (limits) supported on
your system than mine.

Whether bash ought limit its usage output option list to those
options supported on the system it is running on, or whether it
is better to list everything it knows about (either my, or your,
system might have more limits bash knows nothing about) is a
judgement call - neither answer will be right for everyone.

kre

The modified script (using shell idioms, rather that
whatever language you were trying to emulate):

ops=$(ulimit -h 2>&1)
ops=${ops#*\[-SHa}
ops=${ops%%]*}

printf ops=%s\\n "$ops"

while [ -n "$ops" ]
do
        rest=${ops#?}
        op=${ops%${rest}}
        ops=$rest

        ulimit "-$op" >/dev/null
done 2>&1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]