Here is some history and justification for the naming.

Uros Platise created the built-in tasks in 2012 and provided the naming.  I would have preferred another name to avoid the conflicts.

The meaning of external only makes sense with respect what is internal.  If you are think from the perspective of Bash, then internal is what is inside of Bash and external is what is outside of Bash, specifically in a file system.

If you are thinking about the whole FLASH image then what is internal is what is in the FLASH and external is what is outside of the FLASH, i.e., on a file system.  Uros was replacing file system tasks with internal flash tasks so from his point of view, the FLASH based tasks were internal (or built-in) and not external (on a file system).

On 10/12/2023 3:16 PM, Alan C. Assis wrote:
Hi Greg,

On 10/12/23, Gregory Nutt <spudan...@gmail.com> wrote:
On 10/12/2023 2:18 PM, Alan C. Assis wrote:
The execv on Linux also fails when we can an builtin program, try it:
You are right, but the semantics are really confusing.  In Bash,
commands that are included inside of Bash are called built-in commands
and you cannot execute them.  We ignore that naming in NuttX because it
onflicts with some historical naming in NuttX:

Historically, external commands that are NOT part of NSH are called
built-in tasks.  You can execv them if they are in binfs (only).  But
you still can't execv the commands like ls that are a part of NSH.

Thanks for further explanation!

Yes, the naming is confusing, but I think it is difficult to find a
better name to those commands that are internal of nsh. At this point
calling them built-in like in Linux will make things more confuse
because the "external" apps are already called built-in.

It is something that everyone using NuttX get grasped too fast.

BR,

Alan

Reply via email to