Когда я изменяю свою переменную пути, я сделал ошибку, что я ввожу команду source ~/.profile
, затем терминал, когда это открыто каждый раз всегда, не повторяет ничего показывающего как половина изображения как запущение некоторой программы, и я должен использовать 'ctrl+C' для остановки его, и терминал восстановит и повторит 'user:path$'. Даже я перезагружающий компьютер не работаю. Как я восстанавливаю свой компьютер?
Это - то, что происходит, когда я делаю bash -x ~/.profile
- paste.ubuntu.com/23347084
Я решил проблему, основываясь на вашей информации.
Происходит следующее: Bash выполняет .bashrc
, из которого исходят .profile
. .profile
, затем исходники .bashrc
, что создает рекурсивный цикл.
Вы можете удалить строку source .profile
из конца вашего .bashrc
, и это решит проблему.
В 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
, но это более подвержено ошибкам, потому что если вы забудете знак плюса, он будет перезаписан, а если если вы забудете двоеточие, последний путь, добавленный с новым, будет ошибочным, поскольку это подкаталоги.