Как я могу экспортировать / источник /. от товарища -е?

Я пытаюсь написать простой скрипт, который запускает терминал и запускает команду workon foo, Другими словами, я просто хочу сделать:

mate-terminal -e workon foo

Однако это не работает, потому что workon Команда требует, чтобы я сначала сделал:

export WORKON_HOME=~/work;
source /usr/local/bin/virtualenvwrapper.sh

Обычно эти строки запускаются автоматически, потому что они в моем .bashrcно очевидно mate-terminal -e не делает source ~/.bashrc, Однако, если я попытаюсь добавить эти строки в мой скрипт:

mate-terminal -e export WORKON_HOME=~/work; source /usr/local/bin/virtualenvwrapper.sh; workon foo

это тоже не работает. Мате говорит мне:

There was an error creating the child process for this terminal
Failed to execute child process "export" (No such file or directory)

У меня та же проблема, если я пропущу export и просто сделай mate-terminal -e source ... или если я попытаюсь использовать . вместо source (mate-terminal -e . ...).

Я не уверен, как я могу загрузить что-нибудь, если я не могу, export, source, или же ., но должен быть какой-то путь, потому что mate-terminal -e был бы почти бесполезен без этого.

Кто-нибудь знает, как я могу настроить свою среду в терминале, запущенном с mate-terminal -e?

2 ответа

Решение

У меня не установлена ​​версия mate-terminal , но если он работает аналогично gnome-terminal Вы можете попробовать один из следующих способов:

  • написать прямо что-то вроде
    mate-terminal -e bash -c 'WORKON_HOME=$HOME/work; source /usr/local/bin/virtualenvwrapper.sh; workon foo'
    или же
    mate-terminal -e "bash -c 'WORKON_HOME=$HOME/work; source /usr/local/bin/virtualenvwrapper.sh; workon foo; read line'"

    (если честно в gnome-terminal вы должны использовать -x вместо -e ).

  • Чтобы создать свой исполняемый скрипт (с именем WorkOnScript.sh , с chmod u+x WorkOnScript.sh )

    #!/bin/bash 
    WORKON_HOME=$HOME/work;
    source /usr/local/bin/virtualenvwrapper.sh
    cd $HOME/work                                          # If needed
    workon foo
    sleep 10s         # to add  a pause before script and terminal end
    read line         # to wait you press return to close the terminal
    

    и попытаться выполнить это с

     mate-terminal -e /path/to/WorkOnScript.sh
    

    или же

     mate-terminal -e "/bin/bash -c \"/path/to/WorkOnScript.sh\""
    

Заметка

Можно оставить терминал открытым, добавив в качестве последней команды в строке, переданной bash -c или как последняя строка скрипта:

  • на несколько секунд (или часов ...) добавление sleep 10s (или спать 10 часов).
  • пока не будет нажата кнопка возврата read line
  • до нажатия Ctrl + D или выхода, добавляя /bin/bash (он выполняет оболочку).

С некоторыми терминалами через спецификацию параметров можно сохранять их открытыми после выполнения команд. С помощью mate-Terminal вы можете посмотреть, что интересного из mate-terminal --help-all , После этого вы создали профиль с отметкой "Удерживать терминал". Вы можете вызвать терминал с опцией --window-with-profile=PROFILENAME или же --tab-with-profile=PROFILENAME

Рекомендации

Как насчет того, чтобы запустить его в сценарии?

поэтому создайте свой скрипт:

touch ~/myscript.sh
chmod 700 ~/myscript.sh
vi ~/myscript.sh

затем отредактируйте его так, как вы хотите. В vi используйте i для вставки и будьте осторожны с использованием возврата, используйте ESC, а затем X для удаления. Затем выполните ESC и затем ! Qw, чтобы сохранить и выйти:

#!/bin/bash
export WORKON_HOME=~/work;
source /usr/local/bin/virtualenvwrapper.sh
mate-terminal -e workon foo

затем попробуйте и запустите:

./myscript.sh
Другие вопросы по тегам