diff --git a/cfg_checker/common/settings.py b/cfg_checker/common/settings.py
index 1a30ac0..b01d684 100644
--- a/cfg_checker/common/settings.py
+++ b/cfg_checker/common/settings.py
@@ -232,7 +232,7 @@
                 None
             )
             # Warn user only if Kube env is detected locally
-            if self.env_name == "local":
+            if self.env_name == ENV_LOCAL:
                 if not os.path.exists(self.kube_config_path):
                     logger_cli.warn(
                         "Kube config path not found on local env: '{}'".format(
@@ -265,7 +265,7 @@
                     self.kube_node_keypath = self.ssh_key
                 self.kube_node_homepath = self.homepath
 
-    def _init_env(self, env_name=None):
+    def _init_env(self, config_path, env_name=None):
         """Inits the environment vars from the env file
         Uses simple validation for the values and names
 
@@ -279,23 +279,18 @@
             ConfigException -- on env file failed validation
         """
         # load env file as init os.environment with its values
-        if env_name is None:
-            _env_name = ENV_LOCAL
-        else:
-            _env_name = env_name
-        _config_path = os.path.join(pkg_dir, 'etc', _env_name + '.env')
-        if os.path.isfile(_config_path):
-            with open(_config_path) as _f:
+        if os.path.isfile(config_path):
+            with open(config_path) as _f:
                 _list = _f.read().splitlines()
             logger_cli.info(
                 "# Loading env vars from '{}'".format(
-                    _config_path
+                    config_path
                 )
             )
         else:
             raise ConfigException(
                 "# Failed to load enviroment vars from '{}'".format(
-                    _config_path
+                    config_path
                 )
             )
         self.vars = []
@@ -327,13 +322,13 @@
                     len(_list)
                 )
             )
-            self.env_name = _env_name
+            self.env_name = env_name
 
     def __init__(self, args):
         """Base configuration class. Only values that are common for all scripts
         """
         self.ssh_uses_sudo = args.sudo
-        self.kube_config_path = args.kube_config_path
+        self.kube_config_path = args.kube_config
         self.debug = args.debug
         self.force_no_key = args.force_no_key
         # Make sure we running on Python 3
@@ -346,10 +341,15 @@
                 sys.version_info[1]
             ))
 
-        _env = os.getenv('MCP_ENV', None)
+        # if env name is default, check var too
+        if args.env_name == ENV_LOCAL:
+            _env = os.getenv('MCP_ENV', None)
+            _env = _env if _env else args.env_name
+        else:
+            _env = args.env_name
 
         # Init environment variables from file, validate
-        self._init_env(_env)
+        self._init_env(args.env_config, env_name=_env)
         # Load Common vars for any type of the env
         self._init_mcp_values()
         # Detect env types present
@@ -374,11 +374,8 @@
                                 self.mcp_host
                             )
                 )
-        # Init vars that is specific to detected envs only
-        self._init_env_values()
-
         # initialize path to folders
-        if self.env_name == "local":
+        if self.env_name == ENV_LOCAL:
             # names and folders
             self.user = self.pw_user.pw_name
             self.homepath = self.pw_user.pw_dir
@@ -386,3 +383,6 @@
             # names and folders in case of remote env
             self.user = self.ssh_user
             self.homepath = os.path.join('/home', self.ssh_user)
+
+        # Init vars that is specific to detected envs only
+        self._init_env_values()
