2016-04-01 8 views
-1

nach stderr, wenn ich den bash-Test machen:

(exec -l -a specialname /bin/bash -c 'echo $0') 2> error 

der Lauf builtins fehlschlägt, nach einiger Suche fand ich, dass es

^[7^[[r^[[999;999H^[[6n 

zum stderr ausgibt, so dass ich umleiten es zu einem Dateifehler. Wenn ich es cat, gibt es eine Leerzeile aus. Ich öffnete es vim, mit dem ich das gefunden:

^[7^[[r^[[999;999H^[[6n 

warum?

+2

Das sieht wie die Escape-Sequenz aus, um die Terminalfenstergröße festzulegen. Ich kann nicht ganz verstehen, was Sie danach fragen. Es sieht so aus, als hättest du noch ein paar andere Fragen. Könnten Sie das umschreiben, um klarer zu sein? –

+0

Danke, ich möchte fragen, wer die Escape-Sequenz, den Exec-Befehl oder das Terminal ausgibt? – dudengke

+0

Gibt der "exec -l" eine leere Zeile an den stderr aus? – dudengke

Antwort

-1

führen Sie den Befehl:

(exec -l -a specialname /bin/bash -c 'export PS1='test';echo ${PS1}') 2> err.log 

enter image description here

vi err.log 

enter image description here

0

Nach langer Suche fand ich, dass bash die Datei/etc/profile-Datei zu lesen, und in dieser Datei, hat folgendes:

if [ -x /usr/bin/resize ];then /usr/bin/resize >/dev/null fi so die bash das Resize-Programm ausführen, wird dieses Programm durch busybox in meinem System produziert wird, hat die Busybox Quellcode console-tools/resize.c:

fprintf(stderr, ESC"7" ESC"[r" ESC"[999;999H" ESC"[6n") 

so ist es Ausgabe, dass auf stderr.