Add in a new FEATURE (off by default) BB_FEATURE_SH_BUILTINS_ALWAYS_WIN.

Make the sh default to using external commands when a path is provided.
This commit is contained in:
Eric Andersen
2000-11-17 18:07:30 +00:00
parent 337ec1bb32
commit 50b3113dc2
4 changed files with 62 additions and 3 deletions

19
lash.c
View File

@ -1216,7 +1216,24 @@ static int runCommand(struct job *newJob, struct jobSet *jobList, int inBg, int
#ifdef BB_FEATURE_SH_STANDALONE_SHELL
/* Check if the command matches any busybox internal commands here */
while (a->name != 0) {
if (strcmp(get_last_path_component(newJob->progs[i].argv[0]), a->name) == 0) {
#ifdef BB_FEATURE_SH_BUILTINS_ALWAYS_WIN
if (strcmp(get_last_path_component(newJob->progs[i].argv[0]),
a->name) == 0)
#else
/* Check if the command matches any busybox internal
* commands ("applets") here. Following discussions from
* November 2000 on busybox@opensource.lineo.com, don't use
* get_last_path_component(). This way explicit (with
* slashes) filenames will never be interpreted as an
* applet, just like with builtins. This way the user can
* override an applet with an explicit filename reference.
* The only downside to this change is that an explicit
* /bin/foo invocation fill fork and exec /bin/foo, even if
* /bin/foo is a symlink to busybox.
*/
if (strcmp(newJob->progs[i].argv[0], a->name) == 0)
#endif
{
int argc_l;
char** argv=newJob->progs[i].argv;
for(argc_l=0;*argv!=NULL; argv++, argc_l++);