code: def exec(self, command_str, **command_env):
  		
  		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
docs: 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