Как изменить версию gcc без рута в CentOS 7

Вот альтернативный ответ с использованием массивов; к сожалению, для назначения ответа требуется два шага, но я все равно упоминаю об этом, поскольку он более общий и потенциально более универсальный, чем другие ответы:

IFS=: read -ra arr_gopath <<< "$GOPATH"
PATH="$PATH:${arr_gopath[0]/%//bin}"

Преимущество этого подхода заключается в том, что вы можете легко указать любой компонент GOPATH, а не только первый. Или, чтобы добавить все элементы , за которыми следует /bin, кPATH:

PATH="$PATH:$(IFS=:; echo "${arr_gopath[*]/%//bin}")"

В обоих случаях (разделение, объединение )мы устанавливаем внутренний разделитель полей(IFS)на символ двоеточия :. Подстановка ${var/%//bin}добавляет /binв конец выбранной переменной.

Тем не менее, если вы хотите добавить все компонентыGOPATHс суффиксом /binк PATH, то следующее будет проще и не требует массивов. Однако требуется, чтобы GOPATHне было пустым:

PATH="$PATH:${GOPATH//://bin}/bin"

(${var//pattern/subst}заменяет все вхождения patternна subst, тогда как ${var/pattern/subst}, использованное выше, заменяет только первое.)

0
06.04.2021, 01:31
1 ответ

Недостаточно репутации для комментариев, но в вашем пункте 4 написано $HOME/bin/gcc/bin. Это правильно, или вы имели в виду $HOME/bin/?

Если первое верно, то ваш PATHявно неверен, так как он не содержит подкаталога gcc/binи похоже, что вы добавили дополнительный уровень подкаталогов (в gcc/подкаталог с )по $HOME/binпри символической ссылке.

В этом случае либо удалите символическую ссылку дополнительного слоя (на все исполняемые файлы из каталога $HOME/gcc_8_4/в $HOME/bin, либо настройте свой PATHтак, чтобы он включал $HOME/bin/gcc/bin.

0
28.04.2021, 22:53

Теги

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