作者scitamehtam (scitamehtam)
看板Linux
标题[问题] bash 与 ./ 执行 script 差异
时间Fri Oct 15 21:23:40 2021
想请问我写了一个 shell script
然後用 bash 去执行
跟用 ./ 去执行
在系统上是否有差异呢?
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 101.12.44.16 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1634304222.A.4E3.html
1F:推 LinBuoRen: 查一下 shebang 跟 Bash 的 POSIX sh 相容模式 10/15 22:00
2F:→ final01: 基本没差.. 10/16 13:24
3F:→ tomsawyer: 不是第一行写什麽就用什麽执行吗 10/16 19:09
4F:推 Bencrie: ./ 这个看第一行 #!/path/to/interpreter 10/16 19:16
5F:→ scitamehtam: 那用bash 执行的话,script第一行写别的,这样优先 10/16 20:41
6F:→ scitamehtam: 顺序不知道怎麽决定 哈哈 10/16 20:41
7F:→ idisnothing: 你可以试试看 我猜还是bash 10/16 20:43
8F:推 rickieyang: Fork bash 去执行 script, script 第一行写别的. 10/16 21:16
9F:→ rickieyang: bash 会再 fork 第一行写的往下执行吧 10/16 21:17
10F:推 Bencrie: 没有,就是 bash 执行 10/16 21:32
11F:→ idisnothing: 我刚试了一下 bash会直接忽略第一行的内容 直接往下 10/16 21:36
12F:→ idisnothing: 执行 tcsh会fork出第一行#!的shell再往下执行 10/16 21:37
14F:推 kdjf: 建议用语法不同的指令测试 (像是for)。我不确定tcsh怎麽处理 10/17 00:13
15F:→ kdjf: SHELL这个环境变数 10/17 00:13
16F:推 idisnothing: 被楼上说中了 结果tcsh也是忽略#!那一行直接往下执行 10/17 00:29
17F:→ idisnothing: 虽然SHELL变数内容为/bin/bash 但实际上是tcsh在执行 10/17 00:30
19F:→ idisnothing: 看了一下pstree tcsh确实忽略#!那一行没错 10/17 00:43
20F:推 cole945: 因为#就是注解啊... 10/21 10:02
21F:→ cole945: 你会说 /* 我觉得gcc忽略我的注解 */ 吗 10/21 10:02