1
a342191555 2017-09-11 11:47:39 +08:00 via iPhone 4
|
2
Tink 2017-09-11 11:51:31 +08:00 1
补充 ,sh 和 bash 还是有区别的,具体来说 /bin/sh 相当于 /bin/bash --posix
|
3
a342191555 2017-09-11 11:57:12 +08:00 via iPhone 1
@Tink 我以为 sh bash zsh 等分别是不同的 shell,有些许区别…
|
4
Tink 2017-09-11 12:00:06 +08:00 1
@a342191555 #3 一般的 linux 上 sh 都是软链接到 bash 的,但是加了 --posix 参数
|
5
zj299792458 2017-09-11 12:02:03 +08:00 via iPhone
一个手动指定了解释器,一个可以在文件头指定?
|
6
hxsf 2017-09-11 12:03:31 +08:00 2
@a342191555 #1 node xx.js 和 node ./xx.js 没区别,都是在 当前目录找。。。 前者省略了 ./ 而已
|
8
a342191555 2017-09-11 12:08:54 +08:00 via iPhone
@hxsf 是的,我弄错了,xx.js 就是传递给 node 的一个参数而已,具体怎么用应该是看 node 了
|
9
seers 2017-09-11 12:26:25 +08:00
sh 是指定了 shell 来运行脚本 ./就只会用当前 shell 来运行
|
10
a1044634486 2017-09-11 12:33:21 +08:00
1 楼解释很到位的
|
11
lgpqdwjh 2017-09-11 12:38:24 +08:00 1
/bin/sh -- > 执行一个脚本文件
./xxx 表示一个可执行脚本, 首先它要有可执行权限,而一般而言合格的脚本头部都会有 #! 来标识该执行文件的解释器, 可以是 python 可以是 shell, 然而也不是必须的, 当都没有的情况会调用当前 shell |
12
zzn 2017-09-11 12:47:27 +08:00
虽然没什么关系,第一行写成 `#!/usr/bin/env` , 然后./xxx 试试?
|
15
DejaVud 2017-09-11 12:54:18 +08:00
|
16
Umix 2017-09-11 12:59:21 +08:00
|
18
fox0001 2017-09-11 21:20:32 +08:00
大家都解答得差不多了。没事,我就打个酱油
|
19
mingweili0x 2017-09-12 01:01:37 +08:00
如果是直接 ./ 执行的话,也不需要指定 shebang。我一直都是写完 shell 脚本,不写 shebang,加一个+x,直接运行。不过可能不是一个好的习惯吧
|
20
codehz 2017-09-14 15:03:58 +08:00
@xratzh #17 并不需要,会使用用户默认 shell 执行。。
@mingweili0x #19 没错,如果用户默认 shell 和你编写的用的不一样的话(比如 bash vs zsh )就有机会炸掉 |