1) telnetd removed, so it won't be a parent process
2) Restricted shells can redirect window decor to > /dev/tty
3) In wcd(), only do _ignore() if cd (e.g: can't cd /root)
Index: ksh.kshrc
===================================================================
RCS file: /cvs/src/etc/ksh.kshrc,v
retrieving revision 1.19
diff -u -p -r1.19 ksh.kshrc
--- ksh.kshrc 11 Jul 2014 21:12:39 -0000 1.19
+++ ksh.kshrc 25 Oct 2014 16:32:36 -0000
@@ -82,14 +82,19 @@ case "$-" in
xterm*)
ILS='\033]1;'; ILE='\007'
WLS='\033]2;'; WLE='\007'
- parent="`ps -ax 2>/dev/null | grep $PPID | grep -v grep`"
- case "$parent" in
- *telnet*)
- export TERM=xterms;;
- esac
- ;;
*) ;;
esac
+
+ #[[ -o restricted ]] & $-r not set until after
+ # processing of shell init files. The best we can do:
+ # TODO: find a better way to test for restrictions on /bin/{k}sh
+ [[ ${SHELL} == '/bin/rksh' ]] &&
+ {
+ # Restricted shells can't cd, nor redirect output
+ print -n "${WLS}$USER@$HOST ($tty) ~${WLE}" > /dev/tty
+ unset ILS ILE WLS WLE
+ }
+
# do we want window decorations?
if [ "$ILS" ]; then
function ilabel { print -n "${ILS}$*${ILE}">/dev/tty; }
@@ -103,7 +108,7 @@ case "$-" in
function wftp { ilabel "ftp $*"; "ftp" "$@"; _ignore eval
istripe; }
- function wcd { \cd "$@"; _ignore eval stripe; }
+ function wcd { \cd "$@" && _ignore eval stripe; }
function wssh { \ssh "$@"; _ignore eval 'istripe;
stripe'; }
function wtelnet { \telnet "$@"; _ignore eval 'istripe;
stripe'; }