терминал плох

Когда я изменяю свою переменную пути, я сделал ошибку, что я ввожу команду source ~/.profile, затем терминал, когда это открыто каждый раз всегда, не повторяет ничего показывающего как половина изображения как запущение некоторой программы, и я должен использовать 'ctrl+C' для остановки его, и терминал восстановит и повторит 'user:path$'. Даже я перезагружающий компьютер не работаю. Как я восстанавливаю свой компьютер?

picture

Это - то, что происходит, когда я делаю bash -x ~/.profile - paste.ubuntu.com/23347084

0
задан 19 October 2016 в 13:50

2 ответа

Я решил проблему, основываясь на вашей информации.

Происходит следующее: Bash выполняет .bashrc , из которого исходят .profile . .profile , затем исходники .bashrc , что создает рекурсивный цикл.

Вы можете удалить строку source .profile из конца вашего .bashrc , и это решит проблему.

2
ответ дан 28 September 2019 в 09:19

В Bash есть отличный способ сопоставления и удаления строк из переменных и массивов.

Path_to_remove="~/.profile"
PATH=${PATH//:${Path_to_remove}/}

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

source ~/.bashrc

Или используйте сброс для сброса текущего терминала

reset

. Примечание выше действительно хорошо, если вы восходящим образом передали двоичный файл в свой терминал.

Изменения

На основе вашего комментарии, похоже, вы тогда, вероятно, перезаписали переменную пути.

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

первого варианта резервного копирования (в файл)

echo "${PATH}" | tee -a /tmp/path.bak

второго варианта резервного копирования (временного)

Old_path="${PATH}"

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

PATH=$(cat /tmp/path.bak)
## or for option two
PATH=${Old_path}

Наконец, поймите, как путь разделяет пути для разных путей к каталогам, подсказка : двоеточие. И где большая часть программного обеспечения устанавливает исполняемые файлы и / или системные ссылки; ниже приведен список одной из моих свежих файловых систем chroot.

  • / bin
  • / sbin
  • / usr / bin
  • / usr / sbin
  • / usr / local / bin
  • / usr / local / sbin

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

for _path in ${PATH//:/ }; do echo "${_path}"; done

Теперь мы можем работать над восстановлением вашей переменной пути. Обратите внимание: не выполняйте , а не следующее без предварительного резервного копирования текущей переменной пути.

PATH=/bin
## Add further paths using the following syntax
PATH=${PATH}:/sbin
PATH=${PATH}:/usr/bin
PATH=${PATH}:/usr/sbin
PATH=${PATH}:/usr/local/bin
PATH=${PATH}:/usr/local/sbin

Обратите внимание, как указано выше, все, кроме первого, используют $ {PATH}: , чтобы убедиться, что вы не перезаписываем, а вместо этого добавляем к уже существующему значению. То же самое может быть достигнуто с помощью + = , например PATH + =: / sbin , но это более подвержено ошибкам, потому что если вы забудете знак плюса, он будет перезаписан, а если если вы забудете двоеточие, последний путь, добавленный с новым, будет ошибочным, поскольку это подкаталоги.

0
ответ дан 28 September 2019 в 09:19

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

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