On 04/02/2018 03:29 AM, Bas Zoutendijk wrote: > On Mon 2 Apr 2018 at 10:25:45 +0200, David Haller wrote: >> You owe me a dollar! >> >> export PS1="$(chroot '$HOST') $PS1"; >> ^ > > The text within the parentheses was meant as literal text, the chroot > command is executed rightward of the pipe. I could just as well write > > echo 'export PS1="You have chrooted into '$HOST' from $PS1"; exec > <dev/tty' | exec chroot $ROOT /bin/bash -i > > No dollars necessary. > > Sincerely, > > Bas >
Here is original script, to boot-strap computer over nfs (it WORKS!) ---------- #!/bin/sh set -x HOST=${0##*/} HOST=${HOST#*-} ROOT=/mnt/${HOST} PS1="${HOST}" mkdir -p --mode=0755 "${ROOT}" #env -i - HOME="/root" TERM="${TERM}" exec sudo unshare -m /bin/sh -c " exec sudo unshare -m /bin/sh -c " set -e mount -t nfs -o rw,noatime,nocto,actimeo=60,lookupcache=positive,vers=4,fsc '${HOST}:/' '${ROOT}' mount --bind {,'${ROOT}'}/dev mount --bind {,'${ROOT}'}/dev/pts mount --bind {,'${ROOT}'}/dev/shm mount --bind {,'${ROOT}'}/proc mount --bind {,'${ROOT}'}/sys mount --bind {,'${ROOT}'}/usr/local/portage mount --bind {,'${ROOT}'}/usr/portage mount --bind {,'${ROOT}'}/var/cache/edb/dep mount --bind {,'${ROOT}'}/var/tmp/portage exec chroot '${ROOT}' /bin/bash -i env-update source /etc/profile " -------------------- The above script works when I run chroot-eden - which is a just a link to chroot.sh Not sure if these two lines are needed, but it works with or without them: env-update source /etc/profile ---result----- syscon3 /home/thelma # sh chroot-eden + HOST=chroot-eden + HOST=eden + ROOT=/mnt/eden + PS1=eden + mkdir -p --mode=0755 /mnt/eden + exec sudo unshare -m /bin/sh -c ' set -e mount -t nfs -o rw,noatime,nocto,actimeo=60,lookupcache=positive,vers=4,fsc '\''eden:/'\'' '\''/mnt/eden'\'' mount --bind {,'\''/mnt/eden'\''}/dev mount --bind {,'\''/mnt/eden'\''}/dev/pts mount --bind {,'\''/mnt/eden'\''}/dev/shm mount --bind {,'\''/mnt/eden'\''}/proc mount --bind {,'\''/mnt/eden'\''}/sys mount --bind {,'\''/mnt/eden'\''}/usr/local/portage mount --bind {,'\''/mnt/eden'\''}/usr/portage mount --bind {,'\''/mnt/eden'\''}/var/cache/edb/dep mount --bind {,'\''/mnt/eden'\''}/var/tmp/portage exec chroot '\''/mnt/eden'\'' /bin/bash -i env-update source /etc/profile ' syscon3 / # ----end result---- The above execution shows that "PS1=eden" but the prompt shows: "syscon3 / #" (not eden). I've tried the below lines they don't work, I get a syntax error: 1.) echo 'export PS1="$(chroot '$HOST') $PS1"; exec <dev/tty' | exec chroot $ROOT /bin/bash -i + HOST=chroot-eden + HOST=eden + ROOT=/mnt/eden + PS1=eden + mkdir -p --mode=0755 /mnt/eden chroot-eden: line 31: syntax error near unexpected token `(' chroot-eden: line 31: `# echo 'export PS1="(chroot '$HOST') $PS1"; exec <dev/tty' | exec chroot $ROOT /bin/bash -i' 2.) echo 'export PS1="You have chrooted into '$HOST' from $PS1"; exec <dev/tty' | exec chroot $ROOT /bin/bash -i + HOST=chroot-eden + HOST=eden + ROOT=/mnt/eden + PS1=eden + mkdir -p --mode=0755 /mnt/eden chroot-eden: line 31: syntax error near unexpected token `(' chroot-eden: line 31: `# echo 'export PS1="(chroot '$HOST') $PS1"; exec <dev/tty' | exec chroot $ROOT /bin/bash -i' 3.) echo 'export PS1="(chroot '$HOST') $PS1"; exec <dev/tty' | exec chroot $ROOT /bin/bash -i + HOST=chroot-eden + HOST=eden + ROOT=/mnt/eden + PS1=eden + mkdir -p --mode=0755 /mnt/eden chroot-eden: line 31: syntax error near unexpected token `(' chroot-eden: line 31: ` echo 'export PS1="(chroot '$HOST') $PS1"; exec <dev/tty' | exec chroot $ROOT /bin/bash -i' -- Thelma