Как я могу экспортировать / источник /. от товарища -е?
Я пытаюсь написать простой скрипт, который запускает терминал и запускает команду 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
Рекомендации
- Справочные страницы mate-Terminal .
- Другой ответ о том, как держать терминал открытым в сети.
Как насчет того, чтобы запустить его в сценарии?
поэтому создайте свой скрипт:
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