diff --git a/shh.cabal b/shh.cabal
--- a/shh.cabal
+++ b/shh.cabal
@@ -1,5 +1,5 @@
 name:                shh
-version:             0.3.1.1
+version:             0.3.1.2
 synopsis:            Simple shell scripting from Haskell
 description:         Provides a shell scripting environment for Haskell. It
                      helps you all external binaries, and allows you to
diff --git a/src/Shh/Internal.hs b/src/Shh/Internal.hs
--- a/src/Shh/Internal.hs
+++ b/src/Shh/Internal.hs
@@ -18,7 +18,7 @@
 import Control.Exception as C
 import Control.Monad
 import Control.Monad.IO.Class
-import Data.Char (isLower, isSpace, isAlphaNum, isUpper, toLower)
+import Data.Char (isLower, isSpace, isAlphaNum, isUpper, toLower, isNumber)
 import Data.List (dropWhileEnd, intercalate)
 import Data.List.Split (endBy, splitOn)
 import qualified Data.Map as Map
@@ -464,9 +464,10 @@
     let
         i = go (takeFileName ident)
         go (c:cs)
-            | isLower c = c : go' cs
-            | isUpper c = toLower c : go' cs
-            | otherwise = go' (c:cs)
+            | isLower  c = c : go' cs
+            | isUpper  c = toLower c : go' cs
+            | isNumber c = '_' : go' (c : cs)
+            | otherwise  = go' (c:cs)
         go [] = "_"
         go' (c:cs)
             | isAlphaNum c = c : go' cs
