我如何从 mate -e 导出/来源/?

我如何从 mate -e 导出/来源/?

我正在尝试编写一个简单的脚本来启动终端并运行命令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

它也不起作用。MATE 告诉我:

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 ...或者尝试使用().而不是sourcemate-terminal -e . ...),也会遇到同样的问题。

export如果我不能、、source或,我不确定我该如何加载任何东西,.但一定有某种方法,因为mate-terminal -e没有它几乎毫无用处。

有人知道我如何在终端中设置我的环境吗mate-terminal -e

答案1

我没有安装的版本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 小时)。
  • 直到按下return添加read line
  • 直到按下或添加(它执行一个 shell)。ctrl+dexit/bin/bash

通过一些终端参数说明执行命令后可以保持打开状态。使用 mate-terminal,您可以尝试查看其中有趣的内容mate-terminal --help-all。之后,您已创建个人资料“保留终端”勾选后,你可以使用选项--window-with-profile=PROFILENAME--tab-with-profile=PROFILENAME

参考

答案2

你如何在脚本中运行它?

因此创建你的脚本:

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

然后根据你的需要编辑它。在 vi 中使用插入并小心使用退格键,使用ESC键然后X删除。然后执行ESC键进而!qw保存并退出:

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

然后尝试运行它:

./myscript.sh

相关内容