diff --git a/modules/base/pymod/settings.py b/modules/base/pymod/settings.py
index d4aaa710c7e86eed6385ba0115c8aebb1ff423ac..56bf46b4aeedf36cfcd471390cf361860608682e 100644
--- a/modules/base/pymod/settings.py
+++ b/modules/base/pymod/settings.py
@@ -58,6 +58,8 @@ def Locate(file_name, explicit_file_name=None, search_paths=[],
   error message is formatted in such a way that it can directly be presented to 
   the user.
   """
+  def _is_executable(filename):
+    return os.path.exists(filename) and os.access(filename, os.X_OK)
   if type(file_name) is str:
     file_names=[file_name]
   else:
@@ -66,14 +68,14 @@ def Locate(file_name, explicit_file_name=None, search_paths=[],
   epxl_inexistent='explicitly set file "%s" does not exist'
   set_env_var='set the environment variable %s to the absolute path to %s or '
   if explicit_file_name:
-    if os.path.exists(explicit_file_name):
+    if _is_executable(explicit_file_name):
       return explicit_file_name
     else:
       raise FileNotFound(file_name, epxl_inexistent % explicit_file_name)
   if env_name:
     file_env_name=os.getenv(env_name, None)
     if file_env_name:
-      if os.path.exists(file_env_name):
+      if _is_executable(file_env_name):
         return file_env_name
       else:
         raise FileNotFound(file_name, 
@@ -82,7 +84,7 @@ def Locate(file_name, explicit_file_name=None, search_paths=[],
   for search_path in search_paths:
     for file_name in file_names:
       full_file_name=os.path.join(search_path, file_name)
-      if os.path.exists(full_file_name):
+      if _is_executable(full_file_name):
         return full_file_name
 
   if search_system_paths:
@@ -94,7 +96,7 @@ def Locate(file_name, explicit_file_name=None, search_paths=[],
     for path in searched:
       for file_name in file_names:
         full_file_name=os.path.join(path, file_name)
-        if os.path.exists(full_file_name):
+        if _is_executable(full_file_name):
           return full_file_name
   msg=''        
   if len(searched)>0: