Re: Awkward line wrapping in bash


Robert Berger
 

Hi,

Is your problem of line wrapping only on the serial console, or also on an ssh session?

Which version of Yocto do you use?

systemd or sys-v?

Regards,

Robert

On 19/09/2019 17:43, phodina wrote:
Hi,
based on André recommendation I commented out the PS1 variable and now I get `-sh-4.4#` for the prompt. I also checked and nothing is overwriting the variable.
But I tried to change the size of the shell by using `stty cols 100 rows 40` as well as different sizes (smaller and bigger than 80 columns), but the amount of characters I get on the line stays at 81 followed by carrige return. However if I record the session with `script` I get the correct amount of characters per line.
Here is my `stty -a` output:
speed 115200 baud; rows 24; columns 100; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O;
min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon ixoff -iuclc -ixany imaxbel
iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho
-extproc
Best regards
Petr hodina
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Wednesday, September 18, 2019 4:13 PM, André Castro <andre.castro.sw@...> wrote:

Hi Petr,

I still don't think this is related to Yocto.
Comments below.

Best regards,
André
On Wed, 18 Sep 2019, at 02:17:01 PM (WEST+0100), Phodina wrote:

Hi,
so I tried the PS1 prompt as suggested by André and it worked at that time
on the booted system. So I changed the configuration in /etc/profile, built
and flashed the system.
Unfortunately it’s not working and I get the same issue - the line wrapping.
Can you get the value of the 'PS1' variable in the new system that you flashed,
when you are using it and the problem is happening?

Just run "echo $PS1" on the shell.

Just want to make sure that nothing is overwriting the 'PS1' variable and
causing the issue again. There are lots of scripts that can override it.

Here is the content of the /etc/profile:

/etc/profile: system-wide .profile file for the Bourne shell (sh(1))

=====================================================================

and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

=============================================================

PATH="/usr/local/bin:/usr/bin:/bin"
EDITOR="vi" # needed for packages like cron, git-commit
[ "$TERM" ] || TERM="vt100" # Basic terminal capab. For screen etc.

Add /sbin & co to $PATH for the root user

==========================================

[ "$HOME" != "/home/root" ] || PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin

Set the prompt for bash and ash (no other shells known to be in use here)

==========================================================================

[ -z "$PS1" ] || PS1="$(cat /etc/device/hwid)@\h:\w \001\033[96m\002# \001\033[0m\002"
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -f $i -a -r $i ]; then
. $i
fi
done
unset i
fi

Make sure we are on a serial console (i.e. the device used starts with

=======================================================================

/dev/tty[A-z]), otherwise we confuse e.g. the eclipse launcher which tries do

==============================================================================

use ssh

========

case $(tty 2>/dev/null) in
/dev/tty[A-z]*) [ -x /usr/bin/resize ] && /usr/bin/resize >/dev/null;;
esac
export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM
umask 022
I also turned on `checkwinsize` using `shopt` but didn’t work.
I also include the output of stty (over serial):
speed 115200 baud; line = 0;
-brkint ixoff iutf8
-iexten
And over SSH:
speed 38400 baud; line = 0;
eol = M-^?; eol2 = M-^?;
-brkint ixany iutf8
I connect to the board over serial using screen on Mac. In minicom I get the
same issue as do my colleagues on Windows using putty or screen on Linux.
Same happens over SSH.
I also checked that the terming package and those files are installed
correctly in /etc/terminfo.
Kind regards
Petr Hodina
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, September 16, 2019 1:02 PM, phodina phodina@... wrote:

Thanks André,
the PS1 variable has been the cause. Now bash behaves as expected.
Petr
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, September 16, 2019 12:14 PM, André Castro andre.castro.sw@... wrote:

Hi Petr,
On Mon, 16 Sep 2019, at 10:34:33 AM (WEST+0100), Phodina wrote:

Hi,
I would like to ask for a help with an awkward behavior of line wrap
in bash built using Yocto (thud release). When I connect over serial
line, I get strange line wrapping.
This might not be related to Yocto.

The line keeps wrapping on the first line. Here is the environment:
guest@:ebox~ # printenv
LANG=C
EDITOR=vi
HZ=100
HUSHLOGIN=FALSE
USER=root
PWD=/home/root
HOME=/home/root
SHELL=/bin/sh
TERM=linux
SHLVL=1
LOGNAME=root
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
PS1=guest@:ebox\w \033[96m# \033[0m
_=/bin/printenv
I looked for solution and the best direction seems to be run with clean
environment env -i bash --norc --noprofile
And the env:
bash-4.4# printenv
PWD=/home/root
SHLVL=1
_=/bin/printenv
The probable cause of this is the "PS1" variable definition, specially the
colours part. Have a look at thread [1], maybe [2] answer will help.
My suggestion is:
PS1="guest@:ebox\w \001\033[96m\002# \001\033[0m\002"
[1]
https://unix.stackexchange.com/questions/105958/terminal-prompt-not-wrapping-correctly
[2]
https://unix.stackexchange.com/questions/105958/terminal-prompt-not-wrapping-correctly/447520#447520
André

Join yocto@lists.yoctoproject.org to automatically receive all group messages.