4

Я пытаюсь написать простой скрипт, который запускает терминал и запускает команду 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 ответа2

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-терминала вы можете попытаться узнать, что интересного, из mate-terminal --help-all . После того, как вы создали профиль с проверкой "Удерживать терминал", вы можете вызвать терминал с опцией --window-with-profile=PROFILENAME или --tab-with-profile=PROFILENAME

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

2

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

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

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

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