When MATLAB starts, it will look for a pathdef.m file in its startup directory. It should not be edited - leave the default MATLAB path containing only MATLAB native toolboxes. The rest should be configured dynamically, as explained below.
If a custom startup.m is found on the path, it will be executed: https://www.mathworks.com/help/matlab/ref/startup.html
There are two ways to configure place the startup.m on the path:
1. Custom startup folder set via MATLAB icon: (right click on the MATLAB icon | Properties | Start in ) (e.g. F:\Dropbox\Sources\Repos\matlab_config\MATLAB2014) allows controlling different paths and other settings via startup.m file placed in this folder.
2. Place custom startup.m to your userpath (type 'userpath' in the MATLAB command window to figure out yours).
For example, a minimal startup.m for automatically including all GitHub repositories (but excluding not needed internal .git folders) can be just:
addpath(genpath_exclude('YOUR_PATH_TO_REPOS','.git'));
Note: genpath_exclude.m should also be placed in the startup folder.
Example startup.m for GitHub repositoriesand Fieldtrip and NeuroElf from DAG server (Y:):
disp('Welcome to YOUR MATLAB VERSION, e.g. MATLAB2014a'); addpath(genpath_exclude('YOUR_PATH_TO_REPOS','.git')); %<--- !!! change 'YOUR_PATH_TO_REPOS' addpath('Y:\Sources\fieldtrip-20200604'); % or other path to fieldtrip ft_defaults % http://www.fieldtriptoolbox.org/faq/can_i_prevent_external_toolboxes_from_being_added_to_my_matlab_path/ [ftver, ftpath] = ft_version; rmpath(fullfile(ftpath, 'external', 'signal')) rmpath(fullfile(ftpath, 'external', 'stats')) rmpath(fullfile(ftpath, 'external', 'images')) addpath('Y:\Sources\NeuroElf_v11_7521'); addpath('Y:\Sources\NeuroElf_v11_7521\add_dag_ne_pipeline'); dbstop if error
See also https://github.com/igorkagan/matlab_config for the following example that includes genpath_exclude.m:
disp('Welcome to MATLAB2014'); set_sources_path; edit; EditorMacro('Alt-Control-h', @ig_createHeaderComment_dag); dbstop if error
The function set_sources_path.m can be something like the one below, to add all repositories but exclude not needed internal .git folders:
addpath(genpath_exclude('F:\Dropbox\Sources\Repos','.git'));
When MATLAB gives an “eval…” error on startup, permissions for pathdef.m are screwed up, see: https://www.mathworks.com/matlabcentral/answers/307356-why-do-i-get-an-error-using-eval-undefined-function-workspacefunc-for-arguments-of-type-struct