質問するログイン新規登録

回答編集履歴

1

検証を追記

2017/08/25 09:09

投稿

matobaa
matobaa

スコア2493

answer CHANGED
@@ -20,4 +20,67 @@
20
20
  bbb.sh: Bourne-Again shell script, ASCII text executable
21
21
  ccc.sh: a /usr/bin/env sh script, ASCII text executable
22
22
  ttt.sh: a /bin/teratail script, ASCII text executable
23
+ ```
24
+
25
+ # 追記
26
+
27
+ +x して直接実行する際、シェルがシェバンを解釈しています。
28
+
29
+ 書かなかったとき、書いたとき、直接実行したとき、シェルにパラメータ渡ししたときはこんな感じ。
30
+
31
+ | shebang | dashで直接実行 | bashで直接実行 | shにパラメータ渡し | bash にパラメータ渡し |
32
+ |:--|:--|:--|
33
+ | (かかない) | FALSE | TRUE | FALSE | TRUE |
34
+ | #!/bin/sh | FALSE | FALSE | FALSE | TRUE |
35
+ | #!/bin/bash | TRUE | TRUE | FALSE | TRUE |
36
+
37
+ ```
38
+ matobaa@matobaa:~$ echo $SHELL
39
+ /bin/bash
40
+ matobaa@matobaa:~$ cat ./no.sh
41
+ [ a == a ] && echo TRUE || echo FALSE
42
+ matobaa@matobaa:~$ cat ./da.sh
43
+ #!/bin/sh
44
+ [ a == a ] && echo TRUE || echo FALSE
45
+ matobaa@matobaa:~$ cat ./ba.sh
46
+ #!/bin/bash
47
+ [ a == a ] && echo TRUE || echo FALSE
48
+
49
+ matobaa@matobaa:~$ dash
50
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]./no.sh
51
+ ./no.sh: 1: [: a: unexpected operator
52
+ FALSE
53
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]./da.sh
54
+ ./da.sh: 2: [: a: unexpected operator
55
+ FALSE
56
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]./ba.sh
57
+ TRUE
58
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]exit
59
+
60
+ matobaa@matobaa:~$ ./no.sh
61
+ TRUE
62
+ matobaa@matobaa:~$ ./da.sh
63
+ ./da.sh: 2: [: a: unexpected operator
64
+ FALSE
65
+ matobaa@matobaa:~$ ./ba.sh
66
+ TRUE
67
+
68
+ matobaa@matobaa:~$ sh ./no.sh
69
+ ./no.sh: 1: [: a: unexpected operator
70
+ FALSE
71
+ matobaa@matobaa:~$ sh ./da.sh
72
+ ./da.sh: 2: [: a: unexpected operator
73
+ FALSE
74
+ matobaa@matobaa:~$ sh ./ba.sh
75
+ ./ba.sh: 2: [: a: unexpected operator
76
+ FALSE
77
+
78
+ matobaa@matobaa:~$ bash ./no.sh
79
+ TRUE
80
+ matobaa@matobaa:~$ bash ./da.sh
81
+ TRUE
82
+ matobaa@matobaa:~$ bash ./ba.sh
83
+ TRUE
84
+
85
+ matobaa@matobaa:~$
23
86
  ```