private function hasSttyAvailable()
 {
     if (null !== self::$stty) {
         return self::$stty;
     }
     exec('stty 2>&1', $output, $exitcode);
     return self::$stty = $exitcode === 0;
 }
 /**
  * Return a valid Unix shell.
  *
  * @return string|bool The valid shell name, false in case no valid shell is found
  */
 private function getShell()
 {
     if (null !== self::$shell) {
         return self::$shell;
     }
     self::$shell = false;
     if (file_exists('/usr/bin/env')) {
         // handle other OSs with bash/zsh/ksh/csh if available to hide the answer
         $test = "/usr/bin/env %s -c 'echo OK' 2> /dev/null";
         foreach (array('bash', 'zsh', 'ksh', 'csh') as $sh) {
             if ('OK' === rtrim(shell_exec(sprintf($test, $sh)))) {
                 self::$shell = $sh;
                 break;
             }
         }
     }
     return self::$shell;
 }