一键:打开终端,运行命令,继续使用终端

一键:打开终端,运行命令,继续使用终端

我需要一个执行以下操作的 Bash 脚本:

  1. 打开一个新终端
  2. 更改到特定目录
  3. 在该目录中运行命令
  4. 保持终端开放以供进一步使用

具体来说,我想要:

  1. 打开 konsole 终端
  2. 改成/my/work/dir/
  3. 里面/my/work/dir/,跑source bin/activate
  4. 之后我需要在里面运行进一步的命令/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

相关内容