回答編集履歴

1

検証を追記

2017/08/25 09:09

投稿

matobaa
matobaa

スコア2493

test CHANGED
@@ -43,3 +43,129 @@
43
43
  ttt.sh: a /bin/teratail script, ASCII text executable
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ # 追記
50
+
51
+
52
+
53
+ +x して直接実行する際、シェルがシェバンを解釈しています。
54
+
55
+
56
+
57
+ 書かなかったとき、書いたとき、直接実行したとき、シェルにパラメータ渡ししたときはこんな感じ。
58
+
59
+
60
+
61
+ | shebang | dashで直接実行 | bashで直接実行 | shにパラメータ渡し | bash にパラメータ渡し |
62
+
63
+ |:--|:--|:--|
64
+
65
+ | (かかない) | FALSE | TRUE | FALSE | TRUE |
66
+
67
+ | #!/bin/sh | FALSE | FALSE | FALSE | TRUE |
68
+
69
+ | #!/bin/bash | TRUE | TRUE | FALSE | TRUE |
70
+
71
+
72
+
73
+ ```
74
+
75
+ matobaa@matobaa:~$ echo $SHELL
76
+
77
+ /bin/bash
78
+
79
+ matobaa@matobaa:~$ cat ./no.sh
80
+
81
+ [ a == a ] && echo TRUE || echo FALSE
82
+
83
+ matobaa@matobaa:~$ cat ./da.sh
84
+
85
+ #!/bin/sh
86
+
87
+ [ a == a ] && echo TRUE || echo FALSE
88
+
89
+ matobaa@matobaa:~$ cat ./ba.sh
90
+
91
+ #!/bin/bash
92
+
93
+ [ a == a ] && echo TRUE || echo FALSE
94
+
95
+
96
+
97
+ matobaa@matobaa:~$ dash
98
+
99
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]./no.sh
100
+
101
+ ./no.sh: 1: [: a: unexpected operator
102
+
103
+ FALSE
104
+
105
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]./da.sh
106
+
107
+ ./da.sh: 2: [: a: unexpected operator
108
+
109
+ FALSE
110
+
111
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]./ba.sh
112
+
113
+ TRUE
114
+
115
+ \[\e]0;matobaa\a\]\u@matobaa:\w$ \[\033kmatobaa\033\\]exit
116
+
117
+
118
+
119
+ matobaa@matobaa:~$ ./no.sh
120
+
121
+ TRUE
122
+
123
+ matobaa@matobaa:~$ ./da.sh
124
+
125
+ ./da.sh: 2: [: a: unexpected operator
126
+
127
+ FALSE
128
+
129
+ matobaa@matobaa:~$ ./ba.sh
130
+
131
+ TRUE
132
+
133
+
134
+
135
+ matobaa@matobaa:~$ sh ./no.sh
136
+
137
+ ./no.sh: 1: [: a: unexpected operator
138
+
139
+ FALSE
140
+
141
+ matobaa@matobaa:~$ sh ./da.sh
142
+
143
+ ./da.sh: 2: [: a: unexpected operator
144
+
145
+ FALSE
146
+
147
+ matobaa@matobaa:~$ sh ./ba.sh
148
+
149
+ ./ba.sh: 2: [: a: unexpected operator
150
+
151
+ FALSE
152
+
153
+
154
+
155
+ matobaa@matobaa:~$ bash ./no.sh
156
+
157
+ TRUE
158
+
159
+ matobaa@matobaa:~$ bash ./da.sh
160
+
161
+ TRUE
162
+
163
+ matobaa@matobaa:~$ bash ./ba.sh
164
+
165
+ TRUE
166
+
167
+
168
+
169
+ matobaa@matobaa:~$
170
+
171
+ ```