Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

ls command >> Syntax Error.

Asked by ckoolschijn on 20 Aug 2013

Hi all,

I'm experiencing some problems with ls command. after typing ls in MatlabR2013a, I get the contents, but this is preceded by: >> ls set: Syntax Error.

Though everything is displayed well, I find it quite annoying. Any ideas what may cause this?

OS: Mac OSX 10.7.5

terminal usage doesn't give this error. location ls: /bin/ls

Best, Cédric

4 Comments

Walter Roberson on 20 Aug 2013

Please check

which -all ls
ckoolschijn on 21 Aug 2013

with "terminal usage" I meant when I call the ls command from terminal window, so outside the matlab environment.

which -all ls returns: /Applications/MATLAB_R2013a.app/toolbox/matlab/general/ls.m

so this is indeed a different path to the ls function compared to terminal

Laurent on 21 Aug 2013

The matlab function ls.m should call the unix 'ls' command on Mac OS X. Just as a test, what happens when you type for example 'ls -a' in Matlab? Does that work?

ckoolschijn

Tags

Products

No products are associated with this question.

1 Answer

Answer by Walter Roberson on 21 Aug 2013

Check your ~/.bashrc /etc/profile ~/.bash_profile ~/.bash_login and ~/.profile and also any file named by the shell environment variable ENV .

A common error in shell initialization scripts is to use something similar to

set $((tset))

or

stty `tset -q`

(except there would be some option flags involved) to try to set the "terminal type". The "terminal type" is not defined except for interactive login shells. People tend to construct the above initialization files as if they are being executed in that context, but the assumption is not always true. Anything in the shell initialization that depends upon it being an interactive login shell, should be protected with a specific test that a terminal is really available. In the sh / ksh / bash family that can be done with

if -t 0

such as

if -t 0
  stty `tset -q`
fi

5 Comments

ckoolschijn on 27 Aug 2013

I had two set comments:

set autolist
set filesc

If I comment these out, I still get the same message. The same happens with !ls.

You state that matlab should use system ls, yet here it uses its own: ls.m

Walter Roberson on 27 Aug 2013

Read the source for ls.m . You will see that on unix systems it does a unix() call to use the system's ls.

Question: have you set up a shell 'alias' for ls ? e.g.,

alias ls 'ls -C'

?

ckoolschijn on 28 Aug 2013

You're right, it does call the unix() ls.

no aliases are set in my .bash files of .alias. However, I solved the problem, there as I previously also used tcsh shells, there was also a .tcsh file in which some set variables were defined (yet no ls), after moving it to .tcsh.bak, the syntax error is gone. Many thanks for your help! Cheers

Walter Roberson

Contact us