Devi rendere il file eseguibile. Puoi farlo con
chmod +x <filename>
dov'è il nome del tuo script e poi devi anteporlo con ./ per istruire la shell ad eseguire un file nella directory locale, come:
./script.sh
Puoi eseguire solo i file che si trovano nel tuo PATH o che specifichi un percorso per loro. ./ , la directory locale, non è in PATH per impostazione predefinita perché qualcuno potrebbe usarlo per scopi nefasti. Immagina uno script chiamato ls rilasciato in una directory, vai all'interno di quella directory, esegui ls e quello script fa qualcosa di brutto.
Già che ci sei potresti voler renderlo più portabile eseguendo shell invece di bash usando:
#!/bin/sh
oppure eseguendo bash, non importa dove sia installato, purché sia installato:
#!/usr/bin/env bash