I think this is a problem with the precedence of && vs ||. If INSMOD is not set, it will work as you intend, but once it's set, only the || branch will execute.
You can fix it if you group the assignments together:
[ -z "$INSMOD" ] && (INSMOD=$(which modprobe) || INSMOD="$(which insmod)")
On Sat, Feb 27, 2021 at 01:32:55PM -0800, Kenneth Porter wrote:
In the sqm-scripts package for managing network traffic shaping is this line for finding a program suitable for loading the kernel shaping modules:
[ -z "$INSMOD" ] && INSMOD=$(which modprobe) || INSMOD=$(which insmod)
It seems to set INSMOD to /usr/sbin/insmod, even though /usr/sbin/modprobe is available. (Both are symlinks to ../bin/kmod.)
According to this article, the return value of the first assignment should be success and it shouldn't take the fallback statement:
Also working the issue here:
https://github.com/tohojo/sqm-scripts/issues/133
CentOS mailing list CentOS@centos.org https://lists.centos.org/mailman/listinfo/centos