我想运行一个打开终端并向其中输入一组变量的命令。
我怎样才能做到这一点?我正在使用 xfce4 终端。它有一个命令行参数“--command”,用于在打开终端时执行命令。但该 arg 似乎不允许执行源命令。
例如:
使用终端的 --command 标志通过源环境变量打开它
xfce4-terminal \
--command 'source somefile' \
--hold &
但它只是给出一个错误:无法执行子进程“源”:没有这样的文件或目录。
这就是您在阅读 xfce4-terminal 的稀疏联机帮助页后自然会尝试的方法。
在新终端中专门调用 bash 来获取文件怎么样?
xfce4-terminal \
--command 'bash -c "source somefile \
--hold &
这将执行源命令,但一旦完成,终端就会退出。
在搜索论坛并发现必须调用 bash 才能运行 bash 命令源之后,您可以尝试这样做。 (那是什么?用 bash 实例启动终端来调用另一个 bash 来运行命令)
在 bash 中、在 bash 中、在终端中调用 bash 来运行命令
xfce4-terminal \
--command 'bash -c "source somefile; bash"' \
--hold &
这将打开一个终端并使其保持打开状态,但没有源环境。
看起来很愚蠢,但在搜索论坛后您可以尝试其他方法。
使用 bash 在源环境中调用 bash
xfce4-terminal \
--command 'bash -c "bash -c \"source somefile; some_command\""' \
--hold &
这会在新终端中获取新环境,但一旦源 cmd 执行完毕,它就会再次关闭。(只是一些猜测)
创建一个名为 source_somefile 的脚本,该脚本调用 bash 并运行“source somefile”
xfce4-terminal \
--command 'source_somefile' \
--hold &
不会。源 cmd 执行完毕后,终端将立即再次关闭。
尽管您不能因为认为这肯定有效而受到责备:将源 cmd 放入脚本中并使用带有 --command 标志的终端运行该脚本,以便 --hold 标志也可以用于阻止终端退出源命令何时完成执行?
怎么样,运行脚本:bash -c 'source somefile'?
否:源 cmd 执行完毕后,终端将再次关闭。
又怎样能除了打印 xfce4-terminal 联机帮助页并在丰收的月亮下以血祭仪式焚烧它之外,还需要完成此操作吗?然后嚎叫……嚎叫……
答案1
您只需先获取源代码,然后打开终端(我使用的是便携式.
而不是特定于 bash 的source
):
. source_somefile && xfce4-terminal
终端将继承其来源环境。例如,如果我有这个:
$ cat /home/terdon/file
export my_var="foo"
然后创建一个像这样的别名:
alias my_profile='. /home/terdon/file && xfce4-terminal'
然后我可以运行别名,这将打开一个新终端,在其中echo $my_var
打印foo
.请注意,为此需要export
编辑变量,并且您应该使用正在获取的文件的完整路径。
答案2
我见过这里一个可能的解决方案。所以也许--disable-server
最终使用标志有效......