シェルスクリプト総合 その30at TECH
シェルスクリプト総合 その30 - 暇つぶし2ch997:デフォルトの名無しさん
19/08/11 17:03:10.35 k+c7cOcw.net
間違いはそこだよなあ。単に
#!/bin/bash
と書こうとして、うっかり
#!/bin/sh
にしてしまった感じかな

998:デフォルトの名無しさん
19/08/11 17:34:07.21 ++HFlOfG.net
>>979
debianはbash依存をなくすのに苦労したらしいからね。
URLリンク(wiki.ubuntu.com)
> The major reason to switch the default shell was efficiency.
デフォルトシェルを(dash)に変更する理由は効率性です。
> Programs should be written to the standard,
>and if they use extensions they should declare them;
プログラムは標準で書くべきである。拡張を使うなら宣言しなさい。
正しい言葉だ。
拡張を使う理由がないのに効率性を落とす意味ないからね。

999:デフォルトの名無しさん
19/08/11 17:41:28.14 ++HFlOfG.net
>>980
どこでも動くために、POSIXに準拠することの大切さがわかるよね。

1000:デフォルトの名無しさん
19/08/11 17:42:11.13 ++HFlOfG.net
>>982
うっかりじゃなくて、無知だと思うよ。
知ってる人が指摘してあげないとね。

1001:デフォルトの名無しさん
19/08/11 17:46:23.18 k+c7cOcw.net
傲慢だな。そうじゃないと今までの自分のレスが馬鹿みたいだから...
知らないのかもしれないが、/bin/sh が bash の場合、ちゃんとは動かない
てか、あっちのスレを行けよ

1002:デフォルトの名無しさん
19/08/11 17:49:05.08 k+c7cOcw.net
ああ、/bin/sh が bash で、しかも、bash が 3.x の場合かもしれない
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かないのはね。なので、うっかりとしか思えんな

1003:デフォルトの名無しさん
19/08/11 17:50:38.09 ++HFlOfG.net
> /bin/sh が bash の場合、ちゃんとは動かない
だからちゃんと動かないコードを直すべきでは?
/bin/shはdash, bash, ash, ksh, zsh, mksh のいずれかの可能性がある(他にもあるかもしれない)

1004:デフォルトの名無しさん
19/08/11 17:51:46.41 k+c7cOcw.net
>>982って言ってるだろ
/bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かない
ね。詳しく正しくは

1005:デフォルトの名無しさん
19/08/11 17:57:05.79 ++HFlOfG.net
>>987
全角スペースは見やすくするために流石にわざとだとして、
>>975のスクリプトはbash 2.x以上であれば動くよ。確認済み。
(bash 1系の環境は作ってないのでわからん)
Debian、Ubuntuであれば /bin/sh じゃ動かないので
手元のMacかな?それで試しただけだろうね。

1006:デフォルトの名無しさん
19/08/11 17:59:38.45 ++HFlOfG.net
>>989
/bin/shのシンボリックリンクの実体がbash、
つまりposixモードの話をしてるのかもしれないけど、
posixモード(set -o posix)であっても [[ ]] は認識しちゃうからね。
bashのposixモードは、挙動の違いをposixに合わせるだけで
posixにはない拡張機能を無効にすることはないみたい。

1007:デフォルトの名無しさん
19/08/11 18:01:22.10 ++HFlOfG.net
なので>>989が何を言いたいのかわからんね。
具体的に、どういう理由でbashで>>975が動かないのか
どのようなエラーが出力されるのかを言えば
説得力も出ると思うよ。
レス待ってるねw

1008:デフォルトの名無しさん
19/08/11 18:01:36.14 k+c7cOcw.net
#!/bin/sh
てか、sh とコマンド打って起動してでも、echo -n hello は -n hello と表示されるんだなあ。うちのはw
type echo しても echo is a shell builtin だしね。てか、/bin/echo は -n が効くやつだけど

1009:デフォルトの名無しさん
19/08/11 18:02:28.72 k+c7cOcw.net
ちなみに、bash --posix で起動しても echo -n hello は -n hello にはならん、なぞww

1010:デフォルトの名無しさん
19/08/11 18:07:05.61 ++HFlOfG.net
> echo -n hello は -n hello と表示されるんだなあ。
POSIXのechoには-nはないからね。-nに依存するコードを書いてはいけない。
POSIX準拠で書く理由が増えたね。

1011:デフォルトの名無しさん
19/08/11 18:07:37.64 k+c7cOcw.net
誰かさんも使ってると言っていた環境なんだけどなw
$ which sh
/bin/sh
$ ls -l /bin/sh
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh
$ sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
$ sh
$ echo -n hello
-n hello
$ exit
exit
$ bash --posix
$ echo -n hello
hello$

1012:デフォルトの名無しさん
19/08/11 18:08:18.76 ++HFlOfG.net
ま、案外
> /bin/sh が bash であっても、#!/bin/sh だと>>975のスクリプトはうまく動かない
の理由は全角スペースが入ってるからだったりしてねw

1013:デフォルトの名無しさん
19/08/11 18:08:27.92 k+c7cOcw.net
>>995
自説の繰り替えしだけか。しょうもない

1014:デフォルトの名無しさん
19/08/11 18:09:01.47 k+c7cOcw.net
>>997
よく読めよ。都合が悪くて妄想モードか?

1015:デフォルトの名無しさん
19/08/11 18:09:45.54 lm+uP+yI.net
1000!

1016:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 40日 19時間 5分 18秒

1017:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch