小编use*_*769的帖子

交互式 bash shell:通过命令行选项设置工作目录

简单的问题是:我需要在某个目录中启动交互式 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 中,所以主机的工作目录并不重要。我很好奇 bash 如何知道父 shell 的当前工作目录是什么。
  • docker-compose确实有一个-w将采用绝对路径,但不知道如何处理波浪号。
  • cd ~/some/directory ; bash- docker-compose 需要一个实际的可执行文件
  • 将其放入容器中的 rcfile …

shell bash pwd

3
推荐指数
1
解决办法
180
查看次数

标签 统计

bash ×1

pwd ×1

shell ×1