diff options
Diffstat (limited to 'home/dot_local/share/mode/executable_mode')
| -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 |