我需要一个执行以下操作的 Bash 脚本:
- 打开一个新终端
- 更改到特定目录
- 在该目录中运行命令
- 保持终端开放以供进一步使用
具体来说,我想要:
- 打开 konsole 终端
- 改成
/my/work/dir/
- 里面
/my/work/dir/
,跑source bin/activate
- 之后我需要在里面运行进一步的命令
/my/work/dir/
,例如ls
A非常相似的问题针对脚本给出了以下答案(根据我的要求进行调整):
#!/usr/bin/env bash
konsole --noclose --workdir /my/work/dir/ -e 'bash -c 'source bin/activate''
这确实会在 内打开一个新终端/my/work/dir/
,但该终端不是交互式的。
user@userMachine: /my/work/dir$
缺少允许我运行进一步的命令的功能,并且我输入的任何内容(例如pwd
)都不会返回任何内容,只会返回新行。
答案1
您需要指定终端在执行命令后要做什么source bin/activate
。您需要一个活动的 bash 会话,因此您需要运行bash
。此外,还有一个带引号的 mes。因此脚本可以是:
#!/usr/bin/env bash
konsole --noclose --workdir /my/work/dir/ -e 'bash -c "source bin/activate; exec bash"' &
&
在末尾添加是为了保持主要的终端可用,以防您从其他终端窗口执行该脚本。该
exec
命令可以省略,只使用 即可bash
。
以下是一些类似问题的答案,致力于gnome-terminal
:
答案2
我无法发表评论,但据我所知,我可能会建议
#!/bin/bash
cd /my/work/dir/
source bin/activate
konsole