Терминал не открывается под dwm — там файл регистрации ошибок?

[1176124] Это происходит потому, что [1176556] cut [1176557] выводит NULL символы. Вы не можете передать аргументы программы, которые содержат нулевой символ (см. [1176558]this[1176559]).

enter image description here

В bash это работает потому, что bash не может обрабатывать NULL символы в строках, и удаляет их. Zsh немного более мощный, и он может обрабатывать NULL символы. Однако когда приходит время передать строку программе, она все равно содержит ноль, который сигнализирует об окончании аргумента.

Рассмотрим подробнее.

Здесь мы смоделировали один из Ваших файлов, передавая путь через [1176560]cut[1176561]. Обратите внимание на вывод [1176562]xxd[1176563], который имеет NULL символ между [1176564]English[1176565] и [1176566]AU[1176567].

Теперь давайте пробежимся и смоделируем остальную часть сценария.

Обратите внимание на NULL после [1176568]English[1176569]. Эхо [1176570]echo[1176571] отображает его правильно, потому что [1176572]echo[1176573] является встроенным оболочкой. Если мы используем внешнее [1176574]echo[1176575], это также показывает проблему.

P.S. Вы действительно должны цитировать тоже :-)

Решение - не использовать [1176578]cut[1176579], а использовать [1176580]awk[1176581].

2
26.07.2014, 23:04
1 ответ

можете ли вы запустить urxvtc, как указано в строке

/* com/* commands */
static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
static const char *termcmd[]  = { "urxvtc", NULL };mands */

в противном случае используйте другую клемму

0
27.01.2020, 22:59

Теги

Похожие вопросы