pathdef, savepath, ocaverc and Matlab

Ben Abbott bpabbott at mac.com
Thu Jan 3 03:37:43 CST 2008


On Dec 31, 2007, at 12:30 PM, Ben Abbott wrote:

>
> On Dec 31, 2007, at 1:12 AM, Ben Abbott wrote:
>
>>
>> On Dec 31, 2007, at 12:49 AM, John W. Eaton wrote:
>>
>>> The savepath function only exists for compatibility with Matlab, so
>>> whatever it does should be compatible.
>>>
>>> jwe
>>
>> Good point.
>>
>
> I've spent some time looking over the differences between Matlab and  
> Octave regarding path related functions. I've enumerated what I  
> found below.
>
> (1) pathdef: In Octave, pathdef() load's the virgin default path. In  
> Matlab pathdef.m is a script created by savepath.m, and pathdef.m is  
> used to setup Matlab's path each time Matlab is run.
>
> (2) savepath: In Octave, savepath.m saves to current working path to  
> ~/.octaverc. In Matlab, it saves the current working path to  
> pathdef.m. On my Mac, Matlab doesn't require admin access to execute  
> savepath.m ... Can someone tell us if it does on Linux?
>
> (3) restoredefaultpath: In Matlab this allows a user to restore the  
> working path to its virgin form. It only impacts the current  
> session. In Octave, this may be done by path (pathdef);
>
> (4) matlabroot: In Matlab this returns the path to the root of  
> Matlab's installation directory. The Octave equivalent is OCTAVE_HOME.
>
> (5) matlabrc: In Matlab matlabrc.m is supposed to have admin access  
> (?) and is run each time Matlab is started. It is located in  
> <matlabroot>/toolbox/local. The Octave equivalent [of startup] is  
> octaverc located in octave-home/share/octave/version/m/startup.
>
> (6) startup: In Matlab startup.m is run (if it exists in the path)  
> each time Matlab is started, but only after matlabrc.m. The Octave  
> equilvalent is ~/.octaverc.
>
> (7) finish: In Matlab finish.m is run upon a clean exit. From what I  
> can tell there is no Octave equivalent.
>
> There are many differences. Some will require changes to c-code  
> while the majority require changes to m-files.
>
> I'm up to the task of handling the m-files but will need someone to  
> take on the c part.
>
> If it is desirable and appropriate to reconcile these differences, I  
> can put together an approach that will allow for incremental changes  
> that ensures a functional Octave.
>
> I'll get started on the sequence of events needed. In the meantime,  
> I'm eager for feedback so that I'm not wasting effort and/or time.
>
> Ben

I thought I'd rename the thread, as we've branched into a new direction.

Regarding a possible sequence of events to resolve these differences  
between Octave and Matlab, I'd like to propose the following.

(1) Rename the built-in function "pathdef" with to "defaultpath".

(2) Introduce ".../scripts/path/restoredefaultpath.m", which is  
essentially "path (defaultpath);"

(3) Introduce a new script, named ".../scripts/path/pathdef.m", which  
returns the path which an octave session begins with, prior to running  
"~/.octaverc".

(4) The purpose of "savepath" can be left as it is, but might be  
modified to save the path to "octave-home/share/octave/version/m/ 
startup/octavrc" when run with admin privilege. In either event, the  
script should warn the user of which file is modified, when a file is  
not explicitly specified.

(5) Add script "matlabroot.m" to ".../scripts/path/matlabroot.m" ...  
perhaps an "octaveroot.m" also/instead?

(6) If it exists in the path, run script "finish.m" upon exiting.

As I have no experience in c/c++ programming, it is likely a bad idea  
for me to take on (1) or (6), but I'm willing to give (1) a try ...  
However, if someone is up to posting a patch for (1), I'll incorporate  
it into my local build and take on the rest.

Ben







More information about the Octave-maintainers mailing list