diff --git a/enter-systemd-namespace b/enter-systemd-namespace index 8304fb1..b2b0cb0 100755 --- a/enter-systemd-namespace +++ b/enter-systemd-namespace @@ -24,10 +24,10 @@ if ! command -v /usr/bin/unshare > /dev/null; then exit 1 fi -SYSTEMD_EXE="/lib/systemd/systemd --system-unit=basic.target" +SYSTEMD_EXE="/lib/systemd/systemd --unit=basic.target" SYSTEMD_PID="$(ps -eo pid=,args= | awk '$2" "$3=="'"$SYSTEMD_EXE"'" {print $1}')" if [ -z "$SYSTEMD_PID" ]; then - "$DAEMONIZE" /usr/bin/unshare --fork --pid --mount-proc bash -c 'export container=wsl; mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc; exec '"$SYSTEMD_EXE" + "$DAEMONIZE" /usr/bin/unshare --fork --pid --mount-proc sh -c 'export container=wsl; mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc; exec '"$SYSTEMD_EXE" while [ -z "$SYSTEMD_PID" ]; do echo "Sleeping for 1 second to let systemd settle" sleep 1 @@ -37,14 +37,12 @@ fi USER_HOME="$(getent passwd | awk -F: '$1=="'"$SUDO_USER"'" {print $6}')" if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then - if [ -n "$1" ] && [ "$1" != "bash --login" ] && [ "$1" != "/bin/bash --login" ]; then + if [ -n "$1" ]; then exec /usr/bin/nsenter -t "$SYSTEMD_PID" -a \ /usr/bin/sudo -H -u "$SUDO_USER" \ - /bin/bash -c 'set -a; [ -f "$HOME/.systemd-env" ] && source "$HOME/.systemd-env"; set +a; exec bash -c '"$(printf "%q" "$@")" + /bin/sh -c 'set -a; [ -f "$HOME/.systemd-env" ] && . "$HOME/.systemd-env"; set +a; exec '"$*" else - exec /usr/bin/nsenter -t "$SYSTEMD_PID" -a \ - /bin/login -p -f "$SUDO_USER" \ - $([ -f "$USER_HOME/.systemd-env" ] && /bin/cat "$USER_HOME/.systemd-env" | xargs printf ' %q') + exec /usr/bin/nsenter -t "$SYSTEMD_PID" -a /bin/login -p -f "$SUDO_USER" fi echo "Existential crisis" exit 1