@Techno-Cat

Как вызвать source при выполнении .sh файла?

(Десятый день знакомства с линуксом)
Надо иногда использовать виртуальное окружение, а ручками каждый раз писать лень, поэтому:
PyShell.sh:
#!/bin/bash
echo "Starting.."
cd /home/technocat/PyShell/bin/
#gnome-terminal -e "bash -c \"source activate; exec bash\""
source activate 
exec bash --login


PyAct.desktop:
[Desktop Entry]
Version=1.0
Name=Run Script
Comment=This will run the script
Exec=gnome-terminal -- bash -c "/home/technocat/PyShell/PyShell.sh; exec bash"
Icon=utilities-terminal
Terminal=false
Type=Application

Почему не работает вызов source activate в PyShell.sh? Зато работет стрелочка вверх и Enter в открывшемся окне терминала, PyShell активируется.
P. S. Большая часть кода написана и доработана GPT, он сказал, что source открывает свой терминал, выполняется и закрывает его. В любом случае, можно ли активировать окружение запуском ярыка с рабочего стола?
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 4
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Большая часть кода написана и доработана GPT,

Поржал. Вот GPT и спрашивайте, почему не так. GPT - огромная библиотека, само оно ни строчки кода написать не может.
Что хотите сделать?
Начинаем разбор:
# Вывели сообщение
echo "Starting.."
# Перешли в некий каталог
cd /home/technocat/PyShell/bin/
# Ничего не делаем, но видимо пытались вызвать окно терминала, только странно как-то
#gnome-terminal -e "bash -c \"source activate; exec bash\""
# Подгружаем скрипт activate из общих путей - такой скрипт существует? Он действительно находится на общих путях?
source activate 
# Вызываем вложенный шелл в режиме логина (при этом выполняется .bash_profile, а не только .bashrc)
exec bash --login

Вы делаете чушь. Полностью. Как сформулировали задачу?

И больше не используйте GPT. Никогда Потому что он вам посоветует патч Бармина - тоже установите? :)
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Так вы source загрузили, а потом запускается новый баш, в котором уже ничего не загружено
exec bash --login

Или я что-то не понял?
Ответ написан
Комментировать
AshBlade
@AshBlade
Просто хочу быть счастливым
Проблема скорее в том, что запускаемый скрипт создает свое окружение и все выполненные в нем операции остаются в нем. Попробуй сурсить скрипт и из самого верхнего скрипта. Т.е.

bash -c "source /home/technocat/PyShell/PyShell.sh; exec bash"
Ответ написан
Комментировать
@rPman
если тебе cd ...;source activate долго писать ручками, сделай это алиасами bash
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы