ваши переменные оцениваются только в первый раз, вы должны поместить их в ps1, чтобы они обрабатывались буквально в первый раз и оценивались после выполнения команды.
PS1='|me::\W| $( mytest=$PWD;mynext="${PWD##*/}"; mylength=$((${#mytest}+${#mynext})) ; length=$(($mylength+6)) ; printf "\\u2500%.0s" $(seq $length $(tput cols))) \w\n\$'
вы можете изменить только 6, если добавили что-то в ps1