Changing shell used in %sh expansion?

Is it possible to change which shell is used when using %sh{…} expansions in function definitions?

You can only change the shell path with KAKOUNE_POSIX_SHELL environment variable.

Example – Using dash:

export KAKOUNE_POSIX_SHELL=/bin/dash

See #2547.

For a custom interpreter, you can do:

define-command my-command %{
  evaluate-commands %sh{
    cat <<'EOF' | crystal eval
      puts "echo 'Tchou'"
EOF
  }
}
1 Like

It’s important to note that majority of plugins expect the sh expansion to be POSIX shell compatible, so for example using shell like fish would break existing plugins.

Although, in case of plugin development, switching to shell such as dash, which more strictly follows POSIX shell conventions, helps keeping your code POSIX compliant, where as if you use the default bash shell, you need to use tools such as shellcheck more often.

1 Like

Using fish will break lots of builtin scripts, not only external plugins.