void runCommand(String cmd) {
		Hashtable table = Menus.getCommands();
		String className = (String)table.get(cmd);
		if (className!=null) {
			String arg = "";
			if (className.endsWith("\")")) {
				// extract string argument (e.g. className("arg"))
				int argStart = className.lastIndexOf("(\"");
				if (argStart>0) {
					arg = className.substring(argStart+2, className.length()-2);
					className = className.substring(0, argStart);
				}
			}
			if (IJ.shiftKeyDown() && className.startsWith("ij.plugin.Macro_Runner") && !Menus.getShortcuts().contains("*"+cmd))
    			IJ.open(IJ.getDirectory("plugins")+arg);
    		else
				IJ.runPlugIn(cmd, className, arg);
		} else {
			// Is this command in Plugins>Macros?
			if (MacroInstaller.runMacroCommand(cmd))
				return;
			// Is this command a LUT name?
			String path = IJ.getDirectory("luts")+cmd+".lut";
			File f = new File(path);
			if (f.exists()) {
				String dir = OpenDialog.getLastDirectory();
				IJ.open(path);
				OpenDialog.setLastDirectory(dir);
			} else if (!openRecent(cmd))
				IJ.error("Unrecognized command: " + cmd);
	 	}
    }