From: WANG Chao Date: Fri, 26 Apr 2013 07:16:19 +0000 (+0800) Subject: _emergency_shell: Show current working directory correctly in shell. X-Git-Tag: 028~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b6f2e05819d9867b7ca69365091ff480556fcfe9;p=thirdparty%2Fdracut.git _emergency_shell: Show current working directory correctly in shell. When dropped to emergency shell, for example, use rd.break=pre-pivot, the PS1 won't correctly show current directory we're in: pre-pivot:/# cd /sysroot/ pre-pivot:/# (still shows "/") Let's take a look at PS1 variable: (I'm adding prefix/suffix 'x' to make it clear): pre-pivot:/# echo x${PS1}x xpre-pivot:/# x (PS1 isn't dynamic) Regarding the current dracut code, it should be: pre-pivot:/# cd /sysroot/etc pre-pivot:/sysroot/etc# With this patch: pre-pivot:/# echo x${PS1}x xpre-pivot:${PWD}# x (Now PS1 is dynamic, it will show the directory correctly) I tested for both normal boot and kdump boot. Signed-off-by: WANG Chao --- diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh index 9bd25f46d..5cb0add57 100755 --- a/modules.d/99base/dracut-lib.sh +++ b/modules.d/99base/dracut-lib.sh @@ -926,7 +926,7 @@ _emergency_shell() local _name="$1" if [ -n "$DRACUT_SYSTEMD" ]; then > /.console_lock - echo "PS1=\"$_name:\${PWD}# \"" >/etc/profile + echo "PS1=\"$_name:\\\${PWD}# \"" >/etc/profile systemctl start dracut-emergency.service rm -f /etc/profile rm -f /.console_lock