List<String> (@NotNull String shell, boolean isLogin, boolean isInteractive, boolean isCommand) { List<String> commands = new ArrayList<>(); commands.add(shell); if (isLogin && !(shell.endsWith("/tcsh") || shell.endsWith("/csh"))) { // Csh/Tcsh does not allow using `-l` with any other options commands.add(SHELL_LOGIN_ARGUMENT); } if (isInteractive && !shell.endsWith("/fish")) { // Fish uses a single config file with conditions commands.add(SHELL_INTERACTIVE_ARGUMENT); } if (isCommand) { commands.add(SHELL_COMMAND_ARGUMENT); } return commands; }