[PATCH] treewide: replace `which` with `command -v`

Stijn Tintel stijn at linux-ipv6.be
Sun Aug 9 19:30:05 EDT 2020


On 8/08/2020 01:54, Paul Spooren wrote:
> Fix shellcheck SC2230
>> which is non-standard. Use builtin 'command -v' instead.
> Once applied to everything concerning OpenWrt we can disable the busybox
> feature `which` and save 3.8kB.

Maybe mention `command -v` is POSIX compliant, and `which` is not, in
the commit message.

Acked-by: Stijn Tintel <stijn at linux-ipv6.be>
>
> Signed-off-by: Paul Spooren <mail at aparcar.org>
> ---
>  include/rootfs.mk                                    |  6 +++---
>  package/base-files/files/lib/upgrade/stage2          |  2 +-
>  .../kernel/broadcom-wl/files/lib/wifi/broadcom.sh    |  2 +-
>  scripts/ipkg-build                                   | 12 ++++++------
>  4 files changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/include/rootfs.mk b/include/rootfs.mk
> index b6775c7e15..18ada3cd43 100644
> --- a/include/rootfs.mk
> +++ b/include/rootfs.mk
> @@ -69,7 +69,7 @@ define prepare_rootfs
>  	@( \
>  		cd $(1); \
>  		for script in ./usr/lib/opkg/info/*.postinst; do \
> -			IPKG_INSTROOT=$(1) $$(which bash) $$script; \
> +			IPKG_INSTROOT=$(1) $$(command -v bash) $$script; \
>  			ret=$$?; \
>  			if [ $$ret -ne 0 ]; then \
>  				echo "postinst script $$script has failed with exit code $$ret" >&2; \
> @@ -79,10 +79,10 @@ define prepare_rootfs
>  		for script in ./etc/init.d/*; do \
>  			grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \
>  			if ! echo " $(3) " | grep -q " $$(basename $$script) "; then \
> -				IPKG_INSTROOT=$(1) $$(which bash) ./etc/rc.common $$script enable; \
> +				IPKG_INSTROOT=$(1) $$(command -v bash) ./etc/rc.common $$script enable; \
>  				echo "Enabling" $$(basename $$script); \
>  			else \
> -				IPKG_INSTROOT=$(1) $$(which bash) ./etc/rc.common $$script disable; \
> +				IPKG_INSTROOT=$(1) $$(command -v bash) ./etc/rc.common $$script disable; \
>  				echo "Disabling" $$(basename $$script); \
>  			fi; \
>  		done || true \
> diff --git a/package/base-files/files/lib/upgrade/stage2 b/package/base-files/files/lib/upgrade/stage2
> index dbb33e8958..a4fef42134 100755
> --- a/package/base-files/files/lib/upgrade/stage2
> +++ b/package/base-files/files/lib/upgrade/stage2
> @@ -45,7 +45,7 @@ switch_to_ramfs() {
>  		snapshot snapshot_tool					\
>  		$RAMFS_COPY_BIN
>  	do
> -		local file="$(which "$binary" 2>/dev/null)"
> +		local file="$(command -v "$binary" 2>/dev/null)"
>  		[ -n "$file" ] && install_bin "$file"
>  	done
>  	install_file /etc/resolv.conf /lib/*.sh /lib/functions/*.sh /lib/upgrade/*.sh /lib/upgrade/do_stage2 /usr/share/libubox/jshn.sh $RAMFS_COPY_DATA
> diff --git a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
> index 33447341b2..352c365f27 100644
> --- a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
> +++ b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
> @@ -223,7 +223,7 @@ enable_broadcom() {
>  	}
>  
>  	local _c=0
> -	local nas="$(which nas)"
> +	local nas="$(command -v nas)"
>  	local if_pre_up if_up nas_cmd
>  	local vif vif_pre_up vif_post_up vif_do_up vif_txpower
>  	local bssmax=$(wlc ifname "$device" bssmax)
> diff --git a/scripts/ipkg-build b/scripts/ipkg-build
> index 21127f3391..6e027bc546 100755
> --- a/scripts/ipkg-build
> +++ b/scripts/ipkg-build
> @@ -10,10 +10,10 @@
>  set -e
>  
>  version=1.0
> -FIND="$(which find)"
> -FIND="${FIND:-$(which gfind)}"
> -TAR="${TAR:-$(which tar)}"
> -GZIP="$(which gzip)"
> +FIND="$(command -v find)"
> +FIND="${FIND:-$(command -v gfind)}"
> +TAR="${TAR:-$(command -v tar)}"
> +GZIP="$(command -v gzip)"
>  
>  # try to use fixed source epoch
>  if [ -n "$SOURCE_DATE_EPOCH" ]; then
> @@ -21,10 +21,10 @@ if [ -n "$SOURCE_DATE_EPOCH" ]; then
>  
>  # look up date of last commit
>  elif [ -d "$TOPDIR/.git" ]; then
> -	GIT="$(which git)"
> +	GIT="$(command -v git)"
>  	TIMESTAMP=$(cd $TOPDIR; $GIT log -1 -s --format=%ci)
>  elif [ -d "$TOPDIR/.svn" ]; then
> -	SVN="$(which svn)"
> +	SVN="$(command -v svn)"
>  	TIMESTAMP=$($SVN info "$TOPDIR" | sed -n "s/^Last Changed Date: \(.*\)/\1/p")
>  else
>  	TIMESTAMP=$(date)





More information about the openwrt-devel mailing list