在当前目录中运行命令的Git Bash文件,然后打开chrome

时间:2017-11-29 06:42:35

标签: bash node-modules git-bash

根据标题,我想要一个.sh文件,我可以将其放入目录然后:

  • 在当前目录中运行http-server(简单节点服务器)
  • 打开Chrome并将其指向该服务器

我的想法是,当我开发时,我可以快速运行此bash文件,并查看我正在处理的任何html / css / javascript网站的当前版本。我的问题是,如果你在bash文件中运行命令,它不会在当前工作目录中运行,而是在根目录中运行(据我所知)。因此,如果我只在我的文件中写http-server,它将运行不在当前目录中但在./中的服务器。

要解决此问题,我想首先cd到目录,然后运行脚本。 current_dir=$(pwd)会给我一些接近当前目录的东西,但是我不能直接把它放到cd命令中,因为它(1)没有引号,所以目录名中的空格会使它不起作用,(2)它以/C/而不是/C:/开头。谁能告诉我如何解决这个问题?

我目前的代码如下所示。

curr_dir=$(pwd)
cd $curr_dir
http-server
start chrome localhost/XXX

并且,如上所述,http-server命令的运行结果在错误的地方运行:

Starting up http-server, serving ./
Available on:
  http://192.168.56.1:8081
  http://192.168.1.21:8081
  http://127.0.0.1:8081
Hit CTRL-C to stop the server

e:对于后来发生这种情况的人来说,这实际上并不是一个问题 - 请参阅接受的答案。我有另一个错字。

1 个答案:

答案 0 :(得分:2)

没有;您运行的命令始终在当前目录中运行。否则,如果您的假设是正确的,例如, ls将始终显示根目录中的文件。

如果要运行位于不同目录中的命令,则需要

../relative/path/to/command

/absolute/path/to/command

这些都不会更改shell的当前目录。您创建的进程的当前工作目录将保留您运行此命令时所在的目录。 (例如,即使您在后台运行它,然后更改为交互式shell中的其他目录。)

如果您希望命令在脚本所在的目录中运行,那么这样的事情偶尔会有用。

cd "$(dirname "$0")"

但是,大多数情况下,您希望并且需要在当前目录中运行命令。

情况下,您希望脚本在固定位置处理数据文件,但这些是极少数例外。在您遇到这种情况之前,请考虑使用{{1在shell脚本中。)

如果cd上某处有http-server命令,则PATH只会运行该命令。您通常拥有http-server上的当前目录,但要在当前目录而不是PATH的任何位置运行二进制文件,您可以这样说:

PATH