больной

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

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

picture [ ! d3]

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

1 ответ

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

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

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

source ~/.bashrc

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

reset
примечание выше, действительно хорошо, если у вас есть восходящий канал с двоичным кодом в ваш терминал.

Edits

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

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

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

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

примечание выше (! d14)

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

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

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

! d20]

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, но сделать это таким образом более подвержено ошибкам, потому что, если вы забудете знак плюса, он перезапишет, и если вы забудете двоеточие, он будет перехватывать последний путь добавлен с новым, поскольку это подкаталоги.
-1
ответ дан 23 May 2018 в 05:03
  • 1
    спасибо, но, похоже, ничего не произошло после запуска первых двух команд, а третьей команде нужно долго ждать, что также может быть причиной проблемы с моим терминалом. – Zhang 19 October 2016 в 07:59
  • 2
    этот ответ не решает проблему – Mark Yisri 19 October 2016 в 15:32
  • 3
    Эй, я добавил дополнительную помощь для ya, основываясь на ваших комментариях, путь был перезаписан, поэтому выше приведены шаги для восстановления путей по одному. Возможно, вам придется добавить больше, но выше вы будете знать, как сделать это безопасно. – S0AndS0 19 October 2016 в 17:34

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

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