Execute the given command (command will be split into tokens, every space that is a part of a token
		must be quoted)

		:param command_str: command to execute
		:param command_env: command environment
		:return: WCommandResultProto

def exec(self, command_str, **command_env):
		""" Execute the given command (command will be split into tokens, every space that is a part of a token
		must be quoted)

		:param command_str: command to execute
		:param command_env: command environment
		:return: WCommandResultProto
		"""
		env = self.__vars.copy()
		env.update(command_env)

		command_tokens = WCommandProto.split_command(command_str)
		command_obj = self.commands().select(*command_tokens, **env)
		if command_obj is None:
			raise WCommandSet.NoCommandFound('No suitable command found: "%s"' % command_str)

		result = command_obj.exec(*command_tokens, **env)
		self.__track_vars(result)
		return result