1

Я недавно начал использовать дистрибутив Anaconda Python для разработки программного обеспечения, и я хочу, чтобы он был дистрибутивом Python по умолчанию, когда я запускаю что-то в терминале. Для этого я добавил каталог двоичных файлов Anaconda в мой файл .bashrc:

export PATH="/opt/anaconda:$PATH"

Это отлично работает.

Однако теперь некоторые инструменты не работают в моей среде рабочего стола Gnome. Я не могу запустить gnome-tweak-tool и не могу открыть терминал с помощью назначенного мной сочетания клавиш.

Я проследил эту проблему до того, что эти операции теперь используют мою установку Anaconda, а не оригинал, в котором установлены некоторые дополнительные библиотеки (например, `gi ').

Итак, как мне решить эту проблему? Есть ли способ, чтобы вещи выполнялись только в начале сеанса терминала, а не для всей моей среды GNOME?

2 ответа2

1

Один из способов сделать это - использовать псевдоним команды python, чтобы использовать anaconda, а не менять путь. Вместо того, чтобы изменить свой путь, попробуйте добавить:

alias python="/opt/anaconda"

в ваш файл .bashrc. Это должно сделать так, чтобы anaconda запускалась только когда вы вводите "python" в терминал, а не когда кто-то другой пытается его использовать. (кто-то поправит меня, если я ошибаюсь, но это должно сработать)

0

Слово, которое вы ищете здесь, это интерактивная оболочка, которая читает ввод от пользователя и отображает вывод в терминале. Это отличается от неинтерактивных оболочек, которые запускают команды из сценария без какого-либо пользовательского ввода (программы, сценарии или среды рабочего стола запускают оболочку неинтерактивно).

В вашем .bashrc вы можете легко проверить, является ли оболочка интерактивной (в bash она имеет значение $- для i ; вы также можете проверить, определен ли $PS1 ), а затем выполнить команду только в интерактивных оболочках:

if [[ $- == *i* ]] # Test if the shell is interactive
then
    echo "Welcome in the interactive shell"
    export PATH="/opt/anaconda:$PATH"
fi

Программы и среды, такие как Gnome, будут игнорировать строки выше, потому что они запускают bash неинтерактивно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .