MATLAB Answers


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


Please check

which -all ls

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

which -all ls returns: /Applications/

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

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?



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))


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`


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

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'


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

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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!