5 ms·
That is... helpful, in a sense. I mean, it's not the fault of the graphic that it's so convoluted. But can someone explain why it has to be this convoluted? If
by MauranKilom 6y ago
That is... helpful, in a sense. I mean, it's not the fault of the graphic that it's so convoluted.
But can someone explain why it has to be this convoluted? If I parse it correctly, there is no single place where I could place an alias and have it be available in all bash invocations (e.g. green and yellow arrow don't go through any common files). Without resorting to sourcing one from another, that is.
Is there a method to this madness?
- praptak 6y agoYou probably don't want to set aliases in all bash invocations, as they can royally screw scripts. For interactive shells the rc file is the proper place.
- laurent92 6y agoI’ve more often had my cronjobs screwed because they didn’t have the same aliases and PATH variables, rather than have them screwed because there was an alias for « ll ». The dichotomy between login and non-login environments is source of hours spent debugging, especially for beginner to average developers.
- JdeBP 6y agoActually, it is the fault of the graphic. One flowchart works like a conventional flowchart but shows all of the command-line overrides as separate decisions. They are, but that obscures the actual simplicity of the system. The other flowchart has an odd way of representing the decisions, not using decision nodes. And the colouring isn't even consistent, and is downright wrong in one place. There are really only four possibilities: login interactive shell, login non-interactive shell, non-login interactive shell, and non-login non-interactive shell. Whether a shell is login/non-login, and whether it is interactive/non-interactive, are determined from a combination of things including standard I/O file descriptors and process arguments; standard-conformant mode differs from native mode in almost all shells; and shells like the Z shell have several compatibility modes for other shells; but there are just four outcomes, one of which (login non-interactive shell) is rare in practice (https://unix.stackexchange.com/q/304447/5132 https://unix.stackexchange.com/q/304447/5132). And the basic idea is that personal convenience shell aliases and shell functions, key bindings, prompts, completion controls, and all of the other UI parphernalia such as history files and mailboxes to monitor, are things that you should only be setting for interactive shells. For the Z shell in its native mode, for example, that's the domain of the global zshrc and the per-user .zshrc . For the Korn and Almquist shells, similarly, that's the domain of the file named by the ENV environment variable. For the C shell it is the domain of the global cshrc and per-user .cshrc .