Первое, что приходит мне в голову, чтобы заменить только часть строки, это подстановка sed.
Пример:
if echo $ PATH => "/ usr / pkg / bin: / usr / bin: / bin: / usr / pkg / games: / usr / pkg / X11R6 / bin"
затем изменить "/ usr / bin" на "/ usr / local / bin" можно следующим образом:
## создает стандартный выходной файл
## символ "=" используется вместо косой черты ("/"), так как это было бы грязно,
# альтернативный символ цитирования должен быть маловероятным в PATH
## здесь символ разделителя пути ":" удаляется и снова добавляется,
# может потребоваться дополнительное двоеточие после последнего пути
echo $ PATH | sed '= / usr / bin: = / usr / local / bin: ='
Это решение заменяет весь элемент пути, поэтому может быть избыточным, если новый элемент похож.
Если новые PATH не являются динамическими, но всегда находятся в некотором постоянном наборе, вы можете сохранить эти в переменной и назначить при необходимости:
PATH = $ TEMP_PATH_1;
# команды ...; \ п
PATH = $ TEMP_PATH_2;
# команды и т.д ...;
Может не быть тем, о чем ты думал. Вот некоторые из соответствующих команд в bash / unix:
Pushd
POPD
CD
ls # может быть l -1A для одного столбца;
находить
Grep
который # мог бы подтвердить, что этот файл - то, откуда, по вашему мнению, он пришел;
окр
тип
.. и все это и многое другое имеют некоторые отношение к PATH или каталогам в целом. Часть изменения текста может быть выполнена любым количеством способов!
Какое бы решение ни было выбрано, оно будет иметь 4 части:
1) получить путь как есть
2) декодировать путь, чтобы найти часть, нуждающуюся в изменениях
3) определение необходимых изменений / интеграция этих изменений
4) проверка / окончательная интеграция / установка переменной