Git Bash как убрать пустую строку после выполнения команды в терминале - PullRequest
0 голосов
/ 31 октября 2019

Я обновляю версию Windows Git Bash до 3.0.2, теперь я столкнулся с очень досадной проблемой, которую трудно объяснить. В терминале после выполнения каждой команды он всегда автоматически добавляет новую пустую строку, например:

User@path $ CMD-1
                         <<-- new line
User@path $ CMD-2
                         <<-- new line
User@path $ CMD-3
                         <<-- new line
User@path $

Отображается как на картинке: enter image description here

У меня вопрос, как я могу удалить этот тип новой строки командного хвоста?

И еще, какой исходный файл добавляет эти хвостовые новые строки после каждой командыказнят? Потому что я почти проверил каждый файл, связанный с PS1 и входными данными, но я до сих пор не могу понять, почему происходит эта глупая функция. Большое спасибо за вашу помощь.

1 Ответ

1 голос
/ 04 ноября 2019

Это вызвано тем, как сконфигурирована переменная оболочки PS1 .

Если вы выполните следующую команду в Git Bash, она напечатает текущее значение вашей переменной $PS1:

echo "$PS1"

Например, для моего компьютера по умолчанию установлено значение $PS1:

\[\033]0;$TITLEPREFIX:$PWD\007\]\n\[\033[32m\]\u@\h \[\033[35m\]$MSYSTEM \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$
                                ^^                                                                                       ^^

Примечание: Вашевыглядят иначе, чем показано выше, потому что я использую более раннюю версию Git Bash. Однако важно отметить два символа новой строки \n (я добавил символы каретки ^^, чтобы четко обозначить их). Значение вашего $PS1, вероятно, будет иметь только один символ новой строки \n.

По сути, именно эти / эти символы новой строки (\n) производят пустой символ новой строки после выполнения команды.


Решение:

Удалить «Новая строка командного хвоста» рассмотрите возможность выполнения следующей составной команды:

echo $'\n'"export PS1='${PS1//\\n/}'" >> ~/.bash_profile

Объяснение:

  • Это существенно добавляет новый код к любому:

    1. Конец вашего существующего .bash_profile файла запуска (если файл действительно уже существует вВаш каталог HOME).

    2. Или в начале только что созданного файла .bash_profile в вашем домашнем каталоге (если файл этого не делает уже существует).

    Например, ваш файл .bash_profile теперь будет содержать строку, которая выглядит примерно так:

    export PS1='<newvalue>'

  • В строке, добавляемой к .bash_profile, используется export для определения нового значения для переменной оболочки $PS1. Часть <newvalue> будет фактически равна тому, что ваше текущее значение PS1 минус любые символы новой строки \n.

  • Часть, которая читает ${PS1//\\n/} в вышеупомянутой составной команде, использует расширение параметра для удаления всех символов новой строки из текущего значения $PS1.

После выполнения вышеупомянутой составной команды "новая строка из командной строки" Эта проблема должна быть решена при следующем создании нового сеанса (т. е. при создании нового окна или перезапуске Git Bash).


Редактировать: Изменение значения PS1 в файле git-prompt.sh:

Если вы не хотите переопределять значение по умолчанию PS1 с помощью вышеупомянутого решения, вы можете изменить значения в файле git-prompt.sh, который Git Bash создает во время установки.

Для этого:

  1. Откройте файл с именем git-prompt.sh в редакторе кода. Файл обычно находится по адресу:

    C:/Program Files/Git/etc/profile.d/git-prompt.sh

  2. Найти экземпляры символов новой строки, например, \n и удалить их.

    Например,;мой файл git-prompt.sh содержал пару строк, которые читались так:

    PS1="$PS1"'\n'
    

    Я просто удалил часть '\n', чтобы они читали:

    PS1="$PS1"
    
  3. Сохраните внесенные изменения в файл git-prompt.sh, затем создайте новый сеанс (т. Е. Создайте новое окно или перезапустите Git Bash).

...