Otwieram terminal xterm (80 kolumn x 24 linie), a następnie uruchamiam $ bash --norc --noprofile
, a następnie, $ tty
aby uzyskać nazwę pliku terminala: dane wyjściowe to /dev/pts/9
.
Z innego terminala uruchamiam:
$ printf foo >/dev/pts/9
foo
jest wypisany w wierszu poleceń powłoki w pierwszym terminalu.
Jeśli nacisnę, C-u
aby uruchomić unix-line-discard
(nazwa funkcji podana przez $ bind -P | grep -i c-u
), foo
nie zostanie usunięta.
Jeśli wstawię 11 spacji i naciśnie C-u
, spacje zostaną usunięte, ale nie foo
.
Jeśli wstawię 12 spacji i naciśnie C-u
, spacje zostaną również usunięte foo
.
Dlaczego nie mogę usunąć foo
po naciśnięciu, C-u
gdy kursor jest tuż za nim, i dlaczego muszę wstawić 12 znaków, aby go usunąć?
Środowisko:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.6 LTS
Release: 16.04
Codename: xenial
$ bash --version | head -n1
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
$ xterm -version
XTerm(322)
źródło
$ printf 'some text'
mogę odtworzyć na bash 5.0 bez--norc --noprofile
wstawienia 17 znaków lub więcej.