aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2026-08-23 12:12:50 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2026-08-23 12:12:50 +0200
commit47d88bed6d4aee919621566074a210a24f8fcb26 (patch)
tree4a75de99e11f00e8914060f75472a4f3a9db4a2c
parent4d99de131495ec2d1b794c713bb1f15cbf04829f (diff)
fix interpreter detection in mode scripts
-rw-r--r--home/dot_local/share/mode/executable_mode14
1 files changed, 12 insertions, 2 deletions
diff --git a/home/dot_local/share/mode/executable_mode b/home/dot_local/share/mode/executable_mode
index dc188e9..f71e46d 100644
--- a/home/dot_local/share/mode/executable_mode
+++ b/home/dot_local/share/mode/executable_mode
@@ -42,6 +42,17 @@ examples:
EOF
}
+get_interpreter() {
+ interpreter="$(sed -n '1s/^#!//p' "$1")"
+ [ -z "$interpreter" ] && return
+ case "$interpreter" in
+ '/usr/bin/env '*|'/bin/env '*)
+ interpreter="$(echo "$interpreter" | sed 's/[^ ]\+ //')"
+ ;;
+ esac
+ basename "$interpreter"
+}
+
# run a module file
run_mod() {
mod_name="$1"
@@ -50,8 +61,7 @@ run_mod() {
! [ -x "$mod_name" ] && return
# parse interpreter from shebang
- interpreter="$(basename "$(command -v $(head -n1 "$mod_name" | sed -n 's/^#!\(.*\)/\1/p'))")"
- if [ "$interpreter" = "sh" ] ; then
+ if [ "$(get_interpreter "$mod_name")" = "sh" ] ; then
# source module if interpreter is POSIX sh (makes plugin functions available)
( . "$mod_name" )
else