Oh, okay. Now everything is much clearer. Seeing this, I can understand, for example, why if I run this twice, the first time I get the output of the 'id' command and the second time the output of the 'pwd' command.
alias id=pwd;id # id output. alias id=pwd;id # pwd output. Thank you again for everything. Best regards. El mié, 18 jun 2025 a las 22:23, Chet Ramey (<chet.ra...@case.edu>) escribió: > On 6/18/25 4:05 PM, Alberto Millán wrote: > > First of all, I'd like to thank you for your responses. > > > > Okay, now I understand a little better what's going on with recursion. > > > > In most cases, I can now see what's wrong, but there's one specific case > > where I can't quite figure out what's wrong. > > > > bash -ic $'alias x=:\nx(){ id;};x' # This case crash. > > bash -ic $'alias x=:;x(){ id;};x' # This case do not crash. > > > > I understand that the crash is caused by recursion, but I don't quite > > understand why the expansion of '\n' works as expected (crashes), but it > > doesn't with the semicolon. > > The man page says: > > "The rules concerning the definition and use of aliases are somewhat > confusing. Bash always reads at least one complete line of input, and > all lines that make up a compound command, before executing any of the > commands on that line or the compound command. Aliases are expanded > when a command is read, not when it is executed. Therefore, an alias > definition appearing on the same line as another command does not take > effect until the shell reads the next line of input, and an alias defi- > nition in a compound command does not take effect until the shell > parses and executes the entire compound command." > > In this case, the second example is a list, which is a compound command > (see the `Lists' section in the man page). > > Bash parses the entire string passed as the argument to -c before executing > any of the commands in it. > > -- > ``The lyf so short, the craft so long to lerne.'' - Chaucer > ``Ars longa, vita brevis'' - Hippocrates > Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/ >