LINUX.ORG.RU

Подменить только один исполняемый файл в PATH


0

1

Вся система работает на Python3, но параллельно нужно запускать программу на python2.

Файлы программы начинаются с #!/usr/bin/env python.

Оба питона лежат в /usr/bin (/usr/bin/python2, /usr/bin/python3, /usr/bin/python -> /usr/bin/python3).
Оба лежат в одной папке и называются по-разному, поэтому вылечить глобальный PATH не представляется возможным. Разве что локально сделать ~/usr/bin, добавить в глобальный PATH и класть туда оверрайды.

Можно как-нибудь в одну строку сделать лекарство, которое патчило бы не path целиком, а только один элемент в нем?

★★★★☆

#!/usr/bin/env python2

sdio ★★★★★
()
Ответ на: комментарий от Eddy_Em

Файлы лежат в VCS (git), менять из строго не рекомендуется.

А файлов там таких over 9k.

===

Пока что юзаю такой скриптик(~/py2bin):

#!/bin/bash
PATH=/home/olegchir/py2bin:$PATH
export PATH
PYTHONPATH=/usr/lib/python2.7
export PYTHONPATH

запускаю так:

. py2bin

естественно перед этим было в /etc/profile

PATH=$HOME/bin:$PATH

и

mkdir ~/py2bin
ln -s /usr/bin/python2 ~/py2bin/python

Но мне кажется это некрасивым решением.

красиво было бы что-то типа alternatives, но работающее только в рамках одного шелла (или дерева шеллов)

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Как вариант - сделать alias на env, чтобы если аргумент равен python, запускался python2, а потом в отдельном сеансе shell запускать.

Eddy_Em ☆☆☆☆☆
()

> Разве что локально сделать ~/usr/bin, добавить в глобальный PATH и класть туда оверрайды.

Так и делаю, только кладу в ~/.local/bin.

rival ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.