Как временно изменить версию gcc по умолчанию в ArchLinux

Вы не можете иметь /в @(...), !(...), *(...)...

/может появляться только между глобусами, даже a[x/y]bобрабатывается как @(a\[x)/@(y\]b). globs сначала разбиваются на /, и каждая часть сопоставляется с содержимым каталога. Однако при наличии расширений глобуса x(...)ksh нет разделения на /, которые находятся внутри (...), но каждая часть глобуса по-прежнему сопоставляется с именами файлов. В !(*/*)*/*сопоставляется с каждым именем файла в текущем каталоге. Очевидно, что ни одно имя файла не может содержать /, поэтому оно ничему не соответствует, поэтому !(*/*)соответствует каждому файлу.

Здесь вы можете использовать zshи его квалификаторы glob:

echo *(^/)

Для файлов любого типа, кроме каталога. Или быть противоположным bash's */(, который является любым файлом каталога типа после разрешения символической ссылки):

echo *(-^/)

(файлы, которые не являются ни каталогами, ни символическими ссылками на каталоги ).

4
08.08.2017, 23:25
1 ответ

ТЛДР:sudo ln -s $(which gcc-5) /usr/local/bin/gcc; hash -r

По умолчанию двоичный файл gcc находится в/usr/bin

Проверяя наш путь, мы видим, что /usr/local/binидет первым:

echo $PATH | tr ':' '\n'
/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
...

Итак, предположив, что мы установили gcc -5 (yaourt --noconfirm -S gcc5), мы можем сделать эту версию «по умолчанию», создав символическую ссылку в /usr/local/binвот так:

sudo ln -s $(which gcc-5) /usr/local/bin/gcc
sudo ln -s $(which g++-5) /usr/local/bin/g++

Затем нам нужно перехешировать gcc, чтобы удалить старое запомненное расположение gcc:

hash -r

Чтобы восстановить исходную версию gcc «по умолчанию», нам просто нужно удалить эту символическую ссылку и перефразировать:

sudo rm /usr/local/bin/gcc /usr/local/bin/g++
hash -r
5
27.01.2020, 20:59

Теги

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