Подсказка: строка удаляется переключением команд [дубликат]

synergyc требует доступа к серверу X11 (дисплей), и обычно его также следует запускать как обычный пользователь.

Сценарии в /etc/network/if-up.d/ , в свою очередь, запускаются от имени root и не имеют доступа к вашему дисплею X11, поэтому он у вас не работает.

Что вы можете сделать, так это настроить synergyc для подключения к правильному дисплею X11 (обычно это : 0 ), задав переменную среды DISPLAY или указав " параметр --display для synergyc .

Вы также можете использовать sudo , чтобы запустить его как настоящий пользователь (это не обязательно, но, вероятно, в любом случае является хорошей идеей).

Вот небольшой тестовый сценарий, с которым вы можете поэкспериментировать:

#!/bin/sh
[ "$IFACE" = "wlan0" ] || exit 0
export DISPLAY=:0
sudo -u YOUR_USER_NAME xclock &

Замените ИМЯ_ПОЛЬЗОВАТЕЛЯ на свое обычное имя пользователя учетной записи, а wlan0 на имя вашего интерфейса Wi-Fi (в в другом случае), а также убедитесь, что у вас установлен xclock (обычно он является частью пакета x11-apps), затем поместите его в свой / etc / network / if-up .d / , и попробуйте выключить сетевой интерфейс.

Если все пойдет хорошо, xclock будет всплывать каждый раз, когда ваш интерфейс запускается, и вы можете изменить его, чтобы вместо этого запускать synergyc .

2
30.08.2016, 23:30
3 ответа

Это потому, что печатаемые части приглашения \ u в \ w и : экранированы квадратных скобок. Скобки обычно помещаются вокруг непечатаемых символов, чтобы указать bash не перемещать для них курсор и, таким образом, правильно рассчитать размер приглашения. Итак, теперь курсор не перемещается правильно для разделов печати.

Я рекомендую вам изменить части вашего .bashrc , которые задают подсказку, а не отменяют ее ... вы можете раскомментировать (удалить # ) эту строку:

#force_color_prompt=yes

а затем измените вторую строку в этом фрагменте:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

, чтобы она гласила:

PS1='${debian_chroot:+($debian_chroot)}\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '

Или, если вы предпочитаете, просто поместите свое переопределение в конец файла:

PS1='\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '

Это достигает того, что, как я думаю, вы хотите для меня в Ubuntu 16.04 и не ломается так, как вы описываете (с чем я также сталкивался раньше, играя на своей PS1!)

4
27.01.2020, 21:59

Это были скобки, которые мешали ты поднялся чувак. В частности, тот, который не экранирован "[" в начале рабочего каталога. "[\ w" Попробуйте следующее:

PS1="\033[0;34m\u \033[1;32m\[[\033[0;31m\w\033[1;32m]\033[0;37m: "

Он делает в моем терминале именно то, что вы хотите.

0
27.01.2020, 21:59

Неправильное использование квадратных скобок.

PS1="\[\033[0;34m\]\u \[\033[0;37m\]in \[\033[1;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: "
0
27.01.2020, 21:59

Теги

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