diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2026-08-23 12:12:50 +0200 |
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2026-08-23 12:12:50 +0200 |
| commit | 47d88bed6d4aee919621566074a210a24f8fcb26 (patch) | |
| tree | 4a75de99e11f00e8914060f75472a4f3a9db4a2c | |
| parent | 4d99de131495ec2d1b794c713bb1f15cbf04829f (diff) | |
fix interpreter detection in mode scripts
| -rw-r--r-- | home/dot_local/share/mode/executable_mode | 14 |
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 |