Com shc
você pode compilar um script de shell em um arquivo executável da seguinte forma:
$ cat myscript.sh
#!/bin/bash
echo Hello World
stat /etc/passwd
$ shc -vf myscript.sh
shc shll=bash
shc [-i]=-c
shc [-x]=exec '%s' "$@"
shc [-l]=
shc opts=
shc: cc myscript.sh.x.c -o myscript.sh.x
shc: strip myscript.sh.x
shc: chmod go-r myscript.sh.x
$ ./myscript.sh.x
Hello World
File: '/etc/passwd'
Size: 2905 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 6041065 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-03-17 15:41:35.682814004 -0600
Modify: 2017-03-17 15:41:35.686813953 -0600
Change: 2017-03-17 15:41:35.694813853 -0600
Existem, é claro, outros compiladores, por exemplo, ccsh . Geralmente, não é necessário compilar scripts, a menos que você deseje ofuscá-lo por motivos de direitos autorais.
Veja este para mais informações.