Бегущий export PATH=$PATH:/... не устанавливает ваш PATH общесистемный. Это просто переменная оболочки. Запустите новую оболочку и бум, он исчез. Очевидно, что если вы добавили это к ~/.bashrc (или другой загрузочный файл среды) вам придется отменить это изменение, но здесь это не похоже на вашу проблему.
Если вы отчаянно хотите не запускать новую оболочку, вы можете установить ее, удалив вручную с помощью:
Если вы поставите export инструкция в любом файле инициализации оболочки, например ~/.bashrc, вы можете использовать следующие команды в терминале,
#remove the export statement from the file.sed -i 's#export PATH=$PATH:/home/avinash/Desktop/raj##g' ~/.bashrc#source ~/.bashrc. ~/.bashrc
Это приведет к удалению папки из path.
Если вы экспортировали путь из терминала
Папка будет находиться в пути до тех пор, пока вы находитесь в этой оболочке. Чтобы перезаписать путь, вы должны назначить новый путь. Как уже упоминал оли в другом ответе.
Вы можете использовать следующую команду для установки старого пути
Если вы хотите использовать его в качестве команды, вот небольшой скрипт:
#!/bin/bash# This script removes folder from PATH variable# Folders to remove reading as argumentsif [ $# -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, и добавьте его в свой ПУТЬ.
Использование:
unexport /usr/local/bin /bin /sbin
Этот сценарий не изменяет ваш фактический PATH. Если вы хотите, чтобы это сделал скрипт, вам следует изменить последнюю строку. Замена echo "export PATH=$PATH" к export PATH=$PATH
Встроенная команда оболочки export Не определяет, установлена ли переменная или нет, она определяет, задана ли переменная и ее значение также в подпроцессах.
Изменение переменной, экспортированной или нет, не влияет на родительский процесс или выше, поэтому изменение ее в скрипте не имеет никакого эффекта, если этот скрипт не выполняется с source.
Функция оболочки:
function trimpath { PATH=${PATH%:*}}
будет обрезан последний компонент переменной PATH. Его export статус остается неизменным.
declare -x PATH ="/ желаемый / путь / you_want", если я не ошибаюсь, это само обновит то, что вы хотите, и это полностью зависит от вашего желания, каким оно будет. [Убедитесь, что вы запускаетесь от имени root И от имени желаемого пользователя, на которого вы хотите, чтобы это изменение повлияло] Для двойной уверенности запустите ENV после этого, чтобы убедиться, что $PATH был эффективно изменен так, как вы хотите. (Это можно использовать для изменения любого вывода, который вы получите при запуске '/usr/bin/env'. Хотя я не знаю, является ли это постоянным или нет. В этом отношении сделайте, как указано выше, и измените ~ /.bashrc, чтобы он застрял)
Немного объясню, как это будет работать: Сначала мы определяем настройку значения переменной ПУТЬ=, то мы должны сказать, чтобы использовать результирующее значение следующей команды в качестве значения этой переменной, просто используя $(команда), после того , как появилась команда SED sed "s///", в / будут разделителями для этой команды, по умолчанию мы используем / но вы можете установить что-нибудь вроде - или _. Первый s это для замены, затем появился первый разделитель, после которого появилось выражение, которое вы ищете, затем другой разделитель, затем выражение, которое вы хотите заменить первым (которое вы ищете), затем другой разделитель (последний), и вы можете использовать какой-то аргумент, например g, для глобальной замены. То \ это символ scape, который используется для того, чтобы заставить sed понять, что следующий / это литерал, а не разделитель. То <<< предназначен для удаления переменной в командной строке sed.