<div dir="ltr">On Tue, Aug 28, 2012 at 10:58 AM, Hong Yang <span dir="ltr">&lt;<a href="mailto:hyangfji@gmail.com" target="_blank">hyangfji@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I get a bunch of <br>        /bin/sh: lt: command not found,<br>while I expect it act the same as<br>
        mapm    &#39;ls -Alrt --color=auto $_&#39;    ls,<br>
because &quot;lt&quot; is aliased to &quot;ls -Alrt --color=auto.&quot;<br><br>Notice &quot;/bin/sh&quot; above. My shell is actually tcsh. All the aliases are in ~/.cshrc.<br></blockquote><div><br></div><div>&quot;system&quot;-like functions in most languages use /bin/sh specifically, regardless of the user&#39;s shell, because programs cannot be expected to adapt between the different redirection commands use by sh-like and csh-like shells.  Consistency is important here, if you run a shell command from a program you do not want to deal with the fact that csh speaks an incompatible language and fish uses XML, etc.</div>
<div><br></div><div>If you really want to run your/the user&#39;s shell, retrieve $SHELL from the environment and run it directly.</div><div><br></div><div>    system $ &quot;${SHELL:-/bin/sh} -c &#39;&quot; ++ mycommand ++ &quot;&#39;&quot;</div>
<div><br></div></div>-- <br>brandon s allbery                                      <a href="mailto:allbery.b@gmail.com" target="_blank">allbery.b@gmail.com</a><br>wandering unix systems administrator (available)     (412) 475-9364 vm/sms<br>
<br>
</div>