Remove a path in $PATH in Linux OS

My aim is to install JAVA. But I think something went wrong during the installation so I started right from the beginning. I unset the JAVA_HOME variable and am trying to remove the path /opt/jdk-14/bin. I tried a few things, but nothing seems to work out

sudo grep -rl "/opt/jdk-14/bin" /etc

I checked ~/.profile, ~/.bashrc, ~/.bash_profile, /etc/bashrc. But none of the files have the path /opt/jdk-14/bin in it.

Updated

I installed the java all over again. And same path is repeated twice now.

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/jdk-14/bin:/home/dell/flutter/bin:/opt/jdk-14/bin

5
задан 9 July 2020 в 10:00

3 ответа

Чтобы найти, где устанавливается путь, используйте:

sudo grep -rnw --exclude-dir={media,mnt,proc,root,run,sys,/tmp,tmpfs,var} '/' -e "/opt/jdk-14/bin"

Для временного удаления пути для текущего сеанса

Вы можете использовать sed для поиска и замены нежелательного пути. ничего. Сначала посмотрите на текущее содержимое переменной $ PATH :

$ echo $PATH

/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin::/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

Предполагая, что удаляемый путь равен / snap / bin: , затем используйте:

$ NewPath=$(echo "$PATH" | sed 's#/snap/bin:##')

Теперь посмотрим, как выглядит новый путь:

$ echo $NewPath

/home/rick/bin:/home/rick/.local/bin:/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games::/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin

Если вам нравится то, что вы видите, последний шаг - использовать PATH = $ NewPath

0
ответ дан 30 July 2020 в 22:10

This is what I did. I referred this java installation link, on setting the JAVA_HOME variable, the other path was removed.

0
ответ дан 30 July 2020 в 22:10

См. здесь для опций, где могут быть установлены переменные среды. Может быть, вы можете удалить настройку избыточного пути и игнорировать остальную часть этого ответа.

Не все места, упомянутые в связанной статье, допускают выполнение сценария. Но один из вариантов - создать файл с расширением .sh в /etc/profile.d/. и добавьте туда следующий скрипт. Таким образом, он запускается в масштабе всей системы при запуске сеанса рабочего стола:

rpath() {
    set -- $(printf '%s\n' "$@" | sed -e 's/[^^]/[&]/g' -e 's/\^/\\^/g')
    while [ "${1+x}" ]; do
        PATH=$(echo "$PATH" | sed -r -e 's#(^|:)'"$1"'/?(:|$)#\2#g' -e 's/^://')
        shift
    done
}
rpath '/opt/jdk-14/bin'
unset -f rpath

Вы можете даже указать более одного аргумента для функции rpath . Однако это не поможет, если вы попытаетесь удалить путь до того, как он был добавлен в другой файл, который обрабатывается позже.

Кредиты: улучшено с этого

1
ответ дан 30 July 2020 в 22:10

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

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