aboutsummaryrefslogtreecommitdiffstats
path: root/check-installed-shebang
blob: 70bc76e7ef87168e0549a8f36133a0376e97aeed (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/sh
set -e
for f; do
	test -r "$f"
	shebang="$(sed 1q < "$f" | \
	           tr '\t' ' ' | \
	           sed -n 's/#! *\([^ ]\+\)\(\| \+.*\)$/\1\n\2/p' | \
	           sed 's/^ *//')"
	test -n "$shebang"
	path="$(printf '%s\n' "$shebang" | sed -n 1p)"
	program="$(printf '%s\n' "$path" | sed 's/^.*\/\([^/]\+\)$/\1/')"
	arguments="$(printf '%s\n' "$shebang" | sed -n 2p)"
	argument1="$(printf '%s\n' "$arguments" | cut -d ' ' -f 1)"

	if test -z "$path"; then
		continue
	fi

	test -x "$path"
	if test "$program" = env; then
		which -- "${arguments}" >/dev/null 2>/dev/null
	elif test "$program" = shebang; then
		which -- "${argument1}" >/dev/null 2>/dev/null
	fi
done