$ printf "%s\n" "$Variable1" "$Variable2" "$Variable3"
$ cat file
/Variable1=Value1/Variable2=Value Value Value/Variable3=Value3 Value3/
$ source <(tr / "\n" < file | sed -r 's/=(.*)/="\1"/')
$ printf "%s\n" "$Variable1" "$Variable2" "$Variable3"
Value1
Value Value Value
Value3 Value3
Я собираю Vim, поэтому он устанавливается в пользовательский каталог. Я вызываю configure следующим образом:
configure --prefix=/usr/local/mybuild/vim --mandir=/usr/local/mybuild/vim/share/man --without-local-dir...
тогда я
make
make test
make install
тогда исполняемый файл /usr/local/mybuild/vim/bin/vim
.
Чтобы обновить альтернативные ссылки, я выполнил следующее. Это необходимо только один раз, а не после каждого make install
.
update-alternatives --install /usr/bin/editor editor /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/eview eview /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/evim evim /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/ex ex /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/gview gview /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/gvim gvim /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/gvimdiff gvimdiff /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/rgview rgview /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/rgvim rgvim /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/rview rview /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/rvim rvim /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/vi vi /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/view view /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/vim vim /usr/local/mybuild/vim/bin/vim 1200
update-alternatives --install /usr/bin/vimdiff vimdiff /usr/local/mybuild/vim/bin/vim 1200
Я выбрал высокий приоритет (1200 ), чтобы установка системы -не заменяла ссылки.
Теперь Vim — это /usr/bin/vim
, который является ссылкой на /etc/alternatives/vim
, который, в свою очередь, является ссылкой на /usr/local/mybuild/vim/bin/vim
. Поэтому вызов vim
запускает мою личную сборку Vim.
Чтобы увидеть, как настроены альтернативы для vim, вы можете запустить update-alternatives --display vim
. На моей машине он выдает следующий вывод:
$ update-alternatives --display vim
vim - auto mode
link best version is /usr/local/mybuild/vim/bin/vim
link currently points to /usr/local/mybuild/vim/bin/vim
link vim is /usr/bin/vim
/usr/bin/vim.basic - priority 30
/usr/bin/vim.gtk3 - priority 50
/usr/local/mybuild/vim/bin/vim - priority 1200
Произошло одно из двух:
Вы использовали то же имя пакета, что и ваш дистрибутив, но пакет обновлений вашего дистрибутива имеет более позднюю версию. Таким образом, менеджер пакетов с радостью «обновил» вашу пользовательскую сборку до версии вашего дистрибутива. Решение :удалите пакет вашего дистрибутива и используйте другое имя для вашего локального пакета (, напримерlocal-vim
). Если вы должны использовать то же имя (, например, из-за зависимостей ), используйте более позднюю версию. Например, в Debian вы можете добавить эпоху.
Вы установили свой vim -из исходного кода -в /usr
, и файлы из пакета вашего дистрибутива используют те же имена. Таким образом, ваши файлы были перезаписаны. Менее вероятно, так как многие менеджеры пакетов будут довольно громко кричать об этом... Решение состоит в том, чтобы использовать другой путь (, например /opt
или /usr/local
), или не устанавливать пакет вашего дистрибутива.