简单的问题是:我需要在某个目录中启动交互式 bash,并且我可以编写启动 bash 的命令,但我无法修改系统。目前,最适合我需要的命令是
bash -c 'cd some-directory; bash'
Run Code Online (Sandbox Code Playgroud)
也就是说,我调用 bash,cd
在 bash 中使用,然后在其中创建 bash 的子实例来处理我的交互式 bash。
我知道这不是世界上最令人震惊的 bash 用法,但我觉得很奇怪。有没有更简单的方法来完成我正在寻找的事情?
只是为了不必要的上下文:
这是我的工具的一部分,用于通过 docker-compose 在 docker 实例(使用 docker exec)中启动 shell。我可以发现自己位于代表项目的大约 15 个 docker 容器中的任何一个中 - 其中一些有一个我想要进入的“默认”目录,而另一些则不想。该工具旨在弥合差距,并为我提供从一个项目切换到另一个项目的更顺畅的体验。
我尝试过一些我认为可能有效但不包括的事情:
PWD='~/some/directory' bash
- 这只是被忽略bash -i -c "cd ~/some/directory
- 它创建一个标记为交互式的 shell,但不会像普通交互式 shell 那样等待任何输入。echo "cd ~/some/directory" | bash --rcfile -"
值得一试我知道有些事情会起作用,但在我的情况下不起作用:
docker-compose
确实有一个-w
将采用绝对路径,但不知道如何处理波浪号。cd ~/some/directory ; bash
- docker-compose 需要一个实际的可执行文件