Git Bash 在当前目录中运行命令的文件,然后打开 chrome
Git Bash file which runs command in current directory, then opens chrome
根据标题,我想要一个 .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:对于以后遇到此问题的任何人,这实际上不是问题 - 请参阅已接受的答案。我还有一个错字。
否;您 运行 始终在当前目录中 运行 的命令。否则,如果您的假设是正确的,例如ls
将始终显示根目录中的文件。
如果你想要运行一个在不同目录中的命令,你想要
../relative/path/to/command
或
/absolute/path/to/command
这些都不会更改 shell 的当前目录。您创建的进程的当前工作目录将保留您在 运行 此命令时所在的目录。 (例如,即使您 运行 它在后台并随后在您的交互式 shell 中切换到不同的目录。)
如果您希望命令 运行 在磁盘上脚本所在的目录中,这样的东西偶尔会有用。
cd "$(dirname "[=12=]")"
但同样,大多数时候,您希望并需要将命令发送到当前目录中的 运行。
(有 种情况,您希望脚本在固定位置处理数据文件,但这种情况很少见。在出现这种情况之前,请将其视为错误在 shell 脚本中使用 cd
。)
如果您在 PATH
的某处有一个命令 http-server
,那么 http-server
就会 运行 那个。您通常应该 不 在 PATH
上有当前目录,但是 运行 当前目录中的二进制文件而不是 PATH
上的任何地方, 你这么说:
./http-server
根据标题,我想要一个 .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:对于以后遇到此问题的任何人,这实际上不是问题 - 请参阅已接受的答案。我还有一个错字。
否;您 运行 始终在当前目录中 运行 的命令。否则,如果您的假设是正确的,例如ls
将始终显示根目录中的文件。
如果你想要运行一个在不同目录中的命令,你想要
../relative/path/to/command
或
/absolute/path/to/command
这些都不会更改 shell 的当前目录。您创建的进程的当前工作目录将保留您在 运行 此命令时所在的目录。 (例如,即使您 运行 它在后台并随后在您的交互式 shell 中切换到不同的目录。)
如果您希望命令 运行 在磁盘上脚本所在的目录中,这样的东西偶尔会有用。
cd "$(dirname "[=12=]")"
但同样,大多数时候,您希望并需要将命令发送到当前目录中的 运行。
(有 种情况,您希望脚本在固定位置处理数据文件,但这种情况很少见。在出现这种情况之前,请将其视为错误在 shell 脚本中使用 cd
。)
如果您在 PATH
的某处有一个命令 http-server
,那么 http-server
就会 运行 那个。您通常应该 不 在 PATH
上有当前目录,但是 运行 当前目录中的二进制文件而不是 PATH
上的任何地方, 你这么说:
./http-server