diff --git a/shells/bash.go b/shells/bash.go
index 18d608445..f158ffc0b 100644
--- a/shells/bash.go
+++ b/shells/bash.go
@@ -3,6 +3,7 @@ package shells
 import (
 	"bytes"
 	"fmt"
+	"os/exec"
 	"path"
 	"runtime"
 	"strconv"
@@ -307,7 +308,11 @@ func (b *BashShell) GetConfiguration(info common.ShellScriptInfo) (*common.Shell

 	script.Command = "su"
 	if runtime.GOOS == OSLinux {
-		script.Arguments = []string{"-s", "/bin/" + b.Shell, info.User, "-c", script.CmdLine}
+		shellPath, err := exec.LookPath(b.Shell)
+		if err != nil {
+			shellPath = "/bin/" + b.Shell
+		}
+		script.Arguments = []string{"-s", shellPath, info.User, "-c", script.CmdLine}
 	} else {
 		script.Arguments = []string{info.User, "-c", script.CmdLine}
 	}
