diff --git a/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java b/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java index a8690c78b..8643b7312 100644 --- a/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java +++ b/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java @@ -147,7 +147,8 @@ private static File findMainScript() { List cmdLine = System.getProperty("os.name").toLowerCase().contains("win") // npm is a batch script, so on windows we need to use cmd.exe in order to execute it ? Arrays.asList("cmd.exe", "/c", String.format("\"%s\" root -g", npm.getAbsolutePath())) - : Arrays.asList(npm.getAbsolutePath(), "root", "-g"); + //ProcessBuilder doesn't execute a shell, some npm functionality requires the user's shell profile + : Arrays.asList("/bin/sh", "--login", "-c", npm.getAbsolutePath() + " root -g"); ProcessBuilder pb = new ProcessBuilder(cmdLine); String nodeModulesRoot; try {