LeaYeh / minishell

MiniShell is a minimalistic shell interpreter, supporting features like basic command execution, environment variable handling, command chaining, redirections, pipes, subshells, and here documents.
MIT License
23 stars 3 forks source link

[DECISION] Assignments preceding a command are only applied for the duration of the command following it - with exceptions #169

Open itislu opened 7 months ago

itislu commented 7 months ago

We need to decide what parts of normal assignment we want to implement, if any.

Example:

bash-5.1$ HOME=/ cd
bash-5.1$ pwd
/
bash-5.1$ echo $HOME
/nfs/homes/ldulling

Exceptions are "special builtins" in POSIX mode:

For these commands, the assignments are not just local to the command, but to the whole shell.

itislu commented 2 months ago

I now have the opinion that it's fine to treat our builtins like normal, non-POSIX bash does it. All the POSIX special builtins are commands that seem to handle things that any programming language has built-in. For these I think it makes sense that, if you do an assignment before f.e. return, you want the assignment to stay.

However, since we don't implement shell scripts, there's really no need to make those 3 builtins that would be affected in a special way.