nixos-enter: redirect to fd2 instead of a file named /dev/stderr
In some cases, /dev/stderr may not point to a sensible location. For example, running nixos-enter inside a systemd unit where the unit's StandardOutput and StandardError are set to be sockets. In these cases, this line would fail. Piping to fd2 directly works just as well, even under strange and twisted executions. Co-authored-by: Michael Bishop <michael.bishop@iohk.io>
This commit is contained in:
parent
08444aa09b
commit
2d42fc240c
|
@ -60,15 +60,15 @@ chmod 0755 "$mountPoint/dev" "$mountPoint/sys"
|
|||
mount --rbind /dev "$mountPoint/dev"
|
||||
mount --rbind /sys "$mountPoint/sys"
|
||||
|
||||
# If silent, write both stdout and stderr of activation script to /dev/null
|
||||
# otherwise, write both streams to stderr of this process
|
||||
if [ "$silent" -eq 0 ]; then
|
||||
PIPE_TARGET="/dev/stderr"
|
||||
else
|
||||
PIPE_TARGET="/dev/null"
|
||||
fi
|
||||
(
|
||||
# If silent, write both stdout and stderr of activation script to /dev/null
|
||||
# otherwise, write both streams to stderr of this process
|
||||
if [ "$silent" -eq 1 ]; then
|
||||
exec 2>/dev/null
|
||||
fi
|
||||
|
||||
# Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings.
|
||||
LOCALE_ARCHIVE="$system/sw/lib/locale/locale-archive" chroot "$mountPoint" "$system/activate" >>$PIPE_TARGET 2>&1 || true
|
||||
# Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings.
|
||||
LOCALE_ARCHIVE="$system/sw/lib/locale/locale-archive" chroot "$mountPoint" "$system/activate" 1>&2 || true
|
||||
)
|
||||
|
||||
exec chroot "$mountPoint" "${command[@]}"
|
||||
|
|
Loading…
Reference in a new issue