«Bash: warning» каждый раз при запуске терминала

Каждый раз при запуске терминала я получаю это сообщение:

bash: warning: here-document at line 119 delimited by end-of-file (wanted `EOF')

Я полагаю, что недавно пытался установить стек Haskell, и он, похоже, не устанавливался правильно, это может быть в том месте, где появилось предупреждение из того, что он показывает только после этого.

@George при запуске команды это то, что я вижу в терминале, это та же строка, о которой я упоминал в предыдущем комментарии к repeat.

@Джон Привет, вот последние несколько строк, которые появляются при запуске:

    r libreoffice loweb lobase localc
++++ /etc/bash_completion.d/libreoffice.sh:110:unset _def _dir _file _nosp _minusdd _minusdf
+++ /usr/share/bash-completion/bash_completion:1984:unset i _blacklist_glob
+++ /usr/share/bash-completion/bash_completion:1987:[[ /usr/share/bash-completion/bash_completion != \/\h\o\m\e\/\p\e\a\k\s/.bash_completion ]]
+++ /usr/share/bash-completion/bash_completion:1987:[[ -r /home/peaks/.bash_completion ]]
+++ /usr/share/bash-completion/bash_completion:1989:unset -f have
+++ /usr/share/bash-completion/bash_completion:1990:unset have
+++ /usr/share/bash-completion/bash_completion:1992:set +v
+++ /usr/share/bash-completion/bash_completion:1993:unset BASH_COMPLETION_ORIGINAL_V_VALUE
bash: warning: here-document at line 119 delimited by end-of-file (wanted `EOF')
++ /home/peaks/.bashrc:119:cat
+ /home/peaks/.profile:20:PATH=/home/peaks/bin:/home/peaks/.local/bin:/home/peaks/bin:/home/peaks/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

@ John1024 Вот что появляется:

peaks@system64:~$ awk 'NR==119,NR==130' /home/peaks/.bashrc
cat >> ~/.bashrc <<EOF



export PATH="$HOME/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:$PATH"




export PATH="/home/peaks/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:/home/peaks/bin:/home/peaks/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"


peaks@system64:~$
3
задан 23 November 2017 в 04:24

2 ответа

Шаг 1: Симптом

Первоначальным симптомом было сообщение об ошибке:

bash: warning: here-document at line 119 delimited by end-of-file (wanted `EOF')

Это говорит нам о том, что проблема в строке 119, но, к сожалению, не говорит нам, какой файл был запущен когда возникла проблема. В зависимости от конфигурации системы, интерактивный bash может запускать любой из большого количества файлов запуска.

Шаг 2: Диагностика

Чтобы выяснить, какие строки из файлов запуска bash вызывают проблему, можно выполнить:

PS4='+ $BASH_SOURCE:$LINENO:' bash -xlic ""

Запустится интерактивный (-i) оболочка bash login (-l) в режиме диагностики (-x) и запускает пустую команду (-c ""). Приглашение bash PS4 настроено на добавление к каждой строке вывода файла и строки, вызвавшей его.

Шаг 3: выявление проблемы

Запустив указанную выше диагностическую команду, мы обнаружили:

+++ /usr/share/bash-completion/bash_completion:1993:unset BASH_COMPLETION_ORIGINAL_V_VALUE
bash: warning: here-document at line 119 delimited by end-of-file (wanted `EOF')
++ /home/peaks/.bashrc:119:cat
+ /home/peaks/.profile:20:PATH=/home/peaks/bin:/home/peaks/.local/bin:/home/peaks/bin:/home/peaks/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Это указывает на то, что проблема в данном документе возникла из строки 119 файла /home/peaks/.bashrc ]

Соответствующий раздел .bashrc:

cat >> ~/.bashrc <<EOF



export PATH="$HOME/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:$PATH"




export PATH="/home/peaks/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:/home/peaks/bin:/home/peaks/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

Строка 119 cat >> ~/.bashrc <<EOF является проблемой. Он пытается изменить файл .bashrc во время его выполнения. В этом случае это привело к добавлению новых определений PATH в конец .bashrc. По всей видимости, в файле оказалось достаточно большого количества таких операторов PATH, чтобы значительно задержать инициализацию bash.

Шаг 4: Исправить

Проблема может быть исправлена ​​открытием редактора и удалением ненужных строк. Linux предлагает выбор редакторов. Редактор vi гарантированно присутствует в системах POSIX, но у него крутая кривая обучения. nano широко доступен и хорош для новичков, потому что он прост в использовании. Итак, чтобы решить проблему, мы могли бы выполнить:

nano ~/.bashrc

, а затем перейти к строкам проблемы, удалить их и сохранить файл.

В качестве альтернативы, мы можем избежать необходимости изучать новый редактор, выполнив следующую команду:

sed -i.bak '119d; 130,$d' ~/.bashrc

Эта команда обновляет ~/.bashrc на месте, удаляя строку 119 и удаляя из строки 130 конец строки. файл. В целях безопасности резервная копия оригинала ~/bashrc сохраняется как ~/.bashrc.bak.

2
ответ дан 23 November 2017 в 04:24

Ваш файл .bashrc не совпадает с тем, что я вижу, выполните следующие команды:

  1. Сделайте резервную копию:

    cp ~/.bashrc ~/.bashrc.newbak
    
  2. Откройте его в своем любимом редакторе и внесите следующие изменения gedit ~/.bashrc и измените следующие строки (из 119, я считаю):

    1. Ваш bashrc:

      export PATH="$HOME/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:$PATH" 
      
      export PATH="/home/peaks/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:/home/peaks/bin:/home/peaks/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" 
      
      export PATH="/home/peaks/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:/home/peaks/bin:/home/peaks/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
      
    2. Изменения, которые необходимо внести, Удалить все, кроме последней строки из step: 2.1 выше:

      export PATH="/home/peaks/.cabal/bin:/opt/cabal/1.22/bin:/opt/ghc/7.10.3/bin:/home/peaks/bin:/home/peaks/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
      
    3. Сохраните и закройте редактор.

      [тысяча сто двадцать девять]
  3. Проверьте, исправен ли .bashrc:

    source ~/.bashrc
    
  4. Если шаг 3 возвращает ошибки, восстановите их из резервной копии с помощью:

    cat ~/.bashrc.newbak > ~/.bashrc
    
1
ответ дан 23 November 2017 в 04:24

Другие вопросы по тегам:

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