Как удалить путь из системного пути (`$ PATH`) с помощью команд терминала?

Да, Ubuntu 12.04 можно установить в системе на базе EFI. Да, есть и потенциальные проблемы. Безопасная загрузка - одна из потенциальных проблем. Другим является то, что на некоторых компьютерах были нарушены реализации EFI, которые не соблюдают настройки загрузчика NVRAM, то есть вы должны скопировать файл загрузочного загрузчика в EFI/BOOT/bootx64.efi в системном разделе EFI (ESP). Существует множество других возможных незначительных проблем, связанных с EFI, большинство из которых довольно редки.

В худшем случае вы должны установить Ubuntu в BIOS / устаревший режим - большинство EFI материнские платы поддерживают этот тип работы. Это может быть ограничено в будущем, хотя, особенно если у вас есть диск с более чем 2TiB, и вы хотите установить Windows на него.

В целом я бы сказал: просто попробуйте. Если вы столкнулись с проблемами, обратитесь за помощью в форумы или проверьте здесь. (Здесь есть много вопросов, связанных с EFI, а также ответы на большинство из них.)

1
задан 12 March 2014 в 23:45

4 ответа

В вашей текущей оболочке (ваш текущий сеанс gnome-terminal) вы можете сделать это, используя:

export PATH=${PATH%:/home/avinash/Desktop/raj}

В общем:

${string%substring}

удаляет кратчайшее совпадение [ f3] со стороны $string.

Обратите внимание на манипуляции с строками для получения дополнительной информации.

5
ответ дан 24 May 2018 в 10:51

Один грязный хак

export PATH="$( echo $PATH| tr : '\n' |grep -v raj | paste -s -d: )"
разделяет каждый каталог в вашей PATH по строке, используя tr, чтобы удалить то, что вам не нужно (соответствие пути «raj»), используя grep -v, и свернуть вернитесь в длинную строку с разделителями «:», используя paste.

, вероятно, это не сработает, если какой-либо каталог в PATH имеет : или новую строку

, если вы так много делаете, подумайте о том, чтобы сделать его функцией и сохранить в своем (например, .bashrc, .zshrc)

# use like: rminpath "raj"
rminpath(){ export PATH="$( echo $PATH| tr : '\n' |grep -v "$1" | paste -sd: )"; }
2
ответ дан 24 May 2018 в 10:51

Если вы хотите использовать его в качестве команды, вот небольшой скрипт:

#!/bin/bash

# This script removes folder from PATH variable
# Folders to remove reading as arguments

if [ $# -lt 1 ]; then
    echo "You should give at least one argument"
    echo "For example"
    echo "$0 /usr/local/bin"
else
    FOLDERS_TO_REMOVE=`echo $@ | sed 's/ /|/g'`

    echo "You actually PATH variable is:"
    echo $PATH
    echo "###"

    PATH=$( echo ${PATH} | tr -s ":" "\n" | grep -vwE "(${FOLDERS_TO_REMOVE})" | tr -s "\n" ":" | sed "s/:$//" )

    echo "Now you need to run"
    echo "export PATH=$PATH"
fi

Назовите его unexport и добавьте его в свой PATH.

Использование:

unexport /usr/local/bin /bin /sbin

Этот сценарий не меняет ваш PATH. Если вы хотите, чтобы сценарий сделал это, вы должны изменить последнюю строку. Замените echo "export PATH=$PATH" на export PATH=$PATH

1
ответ дан 24 May 2018 в 10:51

Если вы поместите оператор export в любой файл инициализации оболочки, например ~/.bashrc, вы можете использовать следующие команды в терминале,

#remove the export statement from the file.
sed -i 's#export PATH=$PATH:/home/avinash/Desktop/raj##g' ~/.bashrc
#source ~/.bashrc
. ~/.bashrc

Он удалит папку из пути. 1]

Если вы экспортировали путь из терминала

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

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

export PATH=`echo ${PATH/\:\/home\/avinash\/Desktop\/raj/}`

Или просто

export PATH=${PATH/':/home/avinash/Desktop/raj'/}

Это Замена подстановки,

${string/substring/replacement}
1
ответ дан 24 May 2018 в 10:51

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

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