Преглед на файлове

Make sure no error is output if env is missing

Jordi Boggiano преди 13 години
родител
ревизия
fc8d92e7a2
променени са 1 файла, в които са добавени 17 реда и са изтрити 15 реда
  1. 17 15
      src/Composer/IO/ConsoleIO.php

+ 17 - 15
src/Composer/IO/ConsoleIO.php

@@ -162,22 +162,24 @@ class ConsoleIO implements IOInterface
             return $value;
         }
 
-        // 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)))) {
-                $shell = $sh;
-                break;
+        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)))) {
+                    $shell = $sh;
+                    break;
+                }
+            }
+            if (isset($shell)) {
+                $this->write($question, false);
+                $readCmd = ($shell === 'csh') ? 'set mypassword = $<' : 'read mypassword';
+                $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd);
+                $value = rtrim(shell_exec($command));
+                $this->write('');
+
+                return $value;
             }
-        }
-        if (isset($shell)) {
-            $this->write($question, false);
-            $readCmd = ($shell === 'csh') ? 'set mypassword = $<' : 'read mypassword';
-            $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd);
-            $value = rtrim(shell_exec($command));
-            $this->write('');
-
-            return $value;
         }
 
         // not able to hide the answer, proceed with normal question handling