wg wrote:
> Hallo Leute,
>
> hier ist eine openSUSE Leap 42.3
> die Shell /bin/sh zeigt auf /usr/bash
> lrwxrwxrwx 1 root root 4 May 26 11:17 /bin/sh -> bash
> file /bin/sh: symbolic link to bash
>
>
> ich hab ein shell Script 'x.sh' mit explizitem Aufruf '#!/bin/bash', das
> stdout+stderr auf die Konsole und ins file xxx.log ausgibt:
>
> #!/bin/bash
> exec 1> >(tee -a ./xxx.log) 2>&1
> echo "$(date)"
>
> Geht wie beabsichtigt.
[...]
>
>
> Kein großes Ding, aber hat jemand dafür eine Erklärung?
>
Aus der man page:
If bash is invoked with the name sh, it tries to mimic the startup
behavior of historical versions of sh as closely as possible, while
conforming to the POSIX standard as well. When invoked as an interactive
login shell, or a non-interactive shell with the --login option,it first
attempts to read and execute commands from /etc/profile and ~/.profile,
in that order. The --noprofile option may be used to inhibit this
behavior. When invoked as an interactive shell with the name sh, bash
looks for the variable ENV, expands its value if it is defined, and uses the
expanded value as the name of a file to read and execute. Since a shell
invoked as sh does not attempt to read and execute commands from any other
startup files, the --rcfile option has no effect. A non-interactive shell
invoked with the name sh does not attempt to read any other startup files.
When invoked as sh, bash enters posix mode after the startup files are
read.
Wenn du z.B. in deinem Script eine Konstrukt verwendest, das von bash im
posix mode nicht unterstützt wird gibt es solche Fehler.