Description of problem: running dracut to update initial ramdisk after kernel update reports script syntax error and results in incomplete initial ramdisk image. Version-Release number of selected component (if applicable): kexec-tools-2.0.19-1.fc30.x86_64 dracut-049-26.git20181204.fc30.x86_64 dracut-config-rescue-049-26.git20181204.fc30.x86_64 dracut-live-049-26.git20181204.fc30.x86_64 dracut-network-049-26.git20181204.fc30.x86_64 dracut-squash-049-26.git20181204.fc30.x86_64 Running dracut produces the following output: /usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh: line 191: syntax error near unexpected token `<' /usr/lib/dracut/modules.d/99kdumpbase/module-setup.sh: line 191: ` < <(/sbin/ip $_ipv6_flag route show)' Additional info: The reported script file belongs to package "kexec-tools-2.0.19-1.fc30.x86_64". Changing line 191 in this script from "< <(/sbin/ip $_ipv6_flag route show)" to "< $(/sbin/ip $_ipv6_flag route show)" seems to solve the problem.
Hmm, strange, that's valid bash syntax and I can't reproduce the issue. What's your bash version, or are you using some other shell to replace bash?
(In reply to Kairui Song from comment #1) > Hmm, strange, that's valid bash syntax and I can't reproduce the issue. > What's your bash version, or are you using some other shell to replace bash? My (default) shell is bash and shebang of the mentioned script points to /usr/bin/bash. But how can I verify, this script is running with the right shell? It is started indirectly by dracut. The output of: rpm -q --whatprovides /usr/bin/bash is: bash-5.0.2-1.fc30.x86_64 The output of: LANG=C bash --version is: GNU bash, version 5.0.2(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2019 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. I cannot remember, that I configured any shell setting or switched to another shell. I simply upgraded from Fedora 29 to 30. Btw., I can confirm, the bash documentation describes this syntax.
Turns out process substitution is not a posix standard shell syntax, so if bash is configured to strictly follow posix, it won't work. I've sent a patch to fix it.
FEDORA-2020-47cd522de5 has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2020-47cd522de5
FEDORA-2020-d73f5db86c has been pushed to the Fedora 32 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2020-d73f5db86c` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-d73f5db86c See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2020-47cd522de5 has been pushed to the Fedora 31 testing repository. In short time you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2020-47cd522de5` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-47cd522de5 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
The provided package solved this issue. The syntax error message disappeared. I did not configure any static routes. Therefore, no output is produced by the modified function. So I cannot validate the output. Thanks.
FEDORA-2020-d73f5db86c has been pushed to the Fedora 32 stable repository. If problem still persists, please make note of it in this bug report.
FEDORA-2020-47cd522de5 has been pushed to the Fedora 31 stable repository. If problem still persists, please make note of it in this bug report.