微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用初始命令运行交互式bash子shell,而不立即返回(“super”)shell

我想运行一个bash子 shell,(1)运行一些命令,(2)然后保留在子shell中以便随意执行.我可以单独做这些事情:

>使用-c标志运行命令:

$> bash -c "ls; pwd; <other commands...>"

但是,在执行命令后,它会立即返回“超级”shell.我也可以运行一个交互式子shell:
>开始新的bash过程:

$> bash

在我明确说明之前它不会退出子shell但我无法运行任何初始命令.我发现的最接近的解决方案是:

$> bash -c "ls; pwd; <other commands>; exec bash"

它工作,但不是我想要的方式,因为它在一个子shell中运行给定的命令,然后打开一个单独的交互.

我想在一条线上做这件事.一旦我退出子shell,我应该回到常规的“超级”shell而不会发生任何事故.必须有办法~~

NB:我不是在问……

>不要问在哪里抓住bash手册页
>不要问如何从文件中读取初始化命令……我知道如何做到这一点,这不是我正在寻找的解决方
>对使用tmux或gnu屏幕不感兴趣
>对此没有兴趣.即,问题是一般性的,而不是用于任何特定目的
>如果可能的话,我想避免使用那种能够实现我想要的工作方式,但却采用“肮脏”的方式.我只想在一条线上做这件事.特别是,我不想做像xterm -e’ls’这样的事情

这可以通过 temporary named pipes轻松完成:
bash --init-file <(echo "ls; pwd")

这个答案归功于Lie Ryan评论.我发现这非常有用,而且在评论中不太明显,所以我认为这应该是它自己的答案.

原文地址:https://www.jb51.cc/bash/386202.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐