シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その30
https://mevius.5ch.net/test/read.cgi/tech/1561989867/
探検
シェルスクリプト総合 その31
■ このスレッドは過去ログ倉庫に格納されています
2019/08/10(土) 23:17:50.64ID:L+B8OP2P
2019/08/10(土) 23:19:50.86ID:L+B8OP2P
お約束
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
つまりシバンは #!/bin/sh です。
特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。
macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意
自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか?
ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。
FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
android ユーザーは /bin/sh の実体が mksh なので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIX に準拠しましょう
有用なリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIX の sh(1) に一番近いのは OpenSolaris 由来の Heirloom sh、次点で Debian などに搭載されている Dash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIX にはシェルスクリプトに便利な小さなコマンドがいろいろあります
Man ページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1) ないしは man(1) の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
つまりシバンは #!/bin/sh です。
特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。
macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意
自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか?
ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。
FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
android ユーザーは /bin/sh の実体が mksh なので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: http://www.speech-lab.org/~hiroki/csh-whynot.euc)
・POSIX に準拠しましょう
有用なリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています。
最新の仕様はこちらへ: http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIX の sh(1) に一番近いのは OpenSolaris 由来の Heirloom sh、次点で Debian などに搭載されている Dash shell
Heirloom sh: http://heirloom.sourceforge.net/sh.html
Dash shell: http://gondor.apana.org.au/~herbert/dash/
・UNIX にはシェルスクリプトに便利な小さなコマンドがいろいろあります
Man ページや各種リンク(http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.htmlなど)を見ましょう。
apropos(1) ないしは man(1) の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
2019/08/10(土) 23:21:14.80ID:L+B8OP2P
初心者へのアドバイス
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりも Per lまたは Python の方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたら man(1) を引きましょう。
・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易に Perl や Python に逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・例に対して、その例だけ動くコードを書くのはやめましょう。例は例です。本当に実現したいことを文章から読み取りましょう。
・適した道具を判断するのも頭の重要な使い方。
シェルスクリプトよりも Per lまたは Python の方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたら man(1) を引きましょう。
・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
回答者への注意事項
・相手がシェルスクリプトでの処理方法を質問しているのにもかかわらず、よく知りもせずに「そういうのはPerl, Python使え」と回答するのはやめましょう。
安易に Perl や Python に逃げずに小さなコマンドを組み合わせシェルスクリプトで処理するのが頭のいいやり方。
・質問に対して問題が間違ってるといちゃもんをつけるのも避けましょう。
・例に対して、その例だけ動くコードを書くのはやめましょう。例は例です。本当に実現したいことを文章から読み取りましょう。
2019/08/10(土) 23:21:34.36ID:L+B8OP2P
2019/08/10(土) 23:57:47.48ID:L+B8OP2P
関連スレ
【Bash】Windows Subsystem for Linux【WSL】6
https://mao.5ch.net/test/read.cgi/linux/1560665525/
Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
【Bash】Windows Subsystem for Linux【WSL】6
https://mao.5ch.net/test/read.cgi/linux/1560665525/
Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
2019/08/11(日) 00:00:50.90ID:GFStkW/c
【POSIX】 sh系互換 シェルスクリプトスレ
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
https://mevius.5ch.net/test/read.cgi/tech/1535195112/
2019/08/11(日) 02:27:44.34ID:d6NgfAAh
テンプレの「Version 7 UNIX の sh(1) に一番近い」ってそんな根拠ある?
むしろ「POSIX shを最もよく実装してる」ほうが適切な表現じゃね?
むしろ「POSIX shを最もよく実装してる」ほうが適切な表現じゃね?
2019/08/11(日) 02:56:20.42ID:GFStkW/c
>>7
Heirloom shのことだとして(意図的だろうけど)POSIX shではなく
レガシーなBourne shellに近いから「Version 7 UNIX の sh(1) に一番近い」なんだよ
つまり、Version 7 UNIX の sh(1) は Bourne shell。
具体的には ArithmeticExpression $((1+2)) や
Parameter substitution のうち ${p#foo} や ${p%bar} みたいな
POSIXの仕様を実装してない。
Heirloom shのことだとして(意図的だろうけど)POSIX shではなく
レガシーなBourne shellに近いから「Version 7 UNIX の sh(1) に一番近い」なんだよ
つまり、Version 7 UNIX の sh(1) は Bourne shell。
具体的には ArithmeticExpression $((1+2)) や
Parameter substitution のうち ${p#foo} や ${p%bar} みたいな
POSIXの仕様を実装してない。
2019/08/11(日) 03:02:13.27ID:GFStkW/c
もちろん次点のdashはPOSIX shを実装してる。
「最も」かどうかはしらんけど
「最も」かどうかはしらんけど
2019/08/11(日) 06:42:57.65ID:d6NgfAAh
>>8
いや根拠ある?(公式文書内の発表とかで。無い気がする。)
しつこくてごめんね。小さいことが気になる性格なの。
Most scripts that run in the Heirloom Bourne Shell will run with any Unix shell that is still in use in the twenty-first century.
http://heirloom.sourceforge.net/sh.html
いや根拠ある?(公式文書内の発表とかで。無い気がする。)
しつこくてごめんね。小さいことが気になる性格なの。
Most scripts that run in the Heirloom Bourne Shell will run with any Unix shell that is still in use in the twenty-first century.
http://heirloom.sourceforge.net/sh.html
2019/08/11(日) 09:06:35.23ID:++HFlOfG
>>10
根拠を自分で考えるってことができない性格なんだねw
根拠を自分で考えるってことができない性格なんだねw
2019/08/11(日) 09:08:41.84ID:++HFlOfG
Version 7 UNIX の sh(1)やHeirloom Bourne Shellが
「POSIX shを最もよく実装してる」という根拠はないよね
(公式文書内の発表とかでw)
「POSIX shを最もよく実装してる」という根拠はないよね
(公式文書内の発表とかでw)
2019/08/11(日) 09:11:01.36ID:++HFlOfG
http://heirloom.sourceforge.net/sh.html
> Although the Bourne shell is not POSIX-conforming
意訳 The Heirloom Bourne Shellは POSIXと互換性がありません
> Although the Bourne shell is not POSIX-conforming
意訳 The Heirloom Bourne Shellは POSIXと互換性がありません
2019/08/11(日) 09:14:38.09ID:++HFlOfG
(あ、これ、いつもの人かな?推論能力が圧倒的に低くて、書いてある内容から
「ゆえにThe Heirloom Bourne Shellは POSIXと互換性がない」を導き出せない)
「ゆえにThe Heirloom Bourne Shellは POSIXと互換性がない」を導き出せない)
2019/08/11(日) 09:16:58.74ID:lm+uP+yI
前スレ埋めてこいよw
2019/08/11(日) 09:42:08.39ID:d6NgfAAh
2019/08/11(日) 09:44:11.25ID:++HFlOfG
あー、やっぱり読み取れないんだ・・・
2019/08/11(日) 09:47:59.57ID:++HFlOfG
かわいそうだから、せめて日本語訳にしてあげるね。
家宝ボーンシェル
家宝のBourneシェルは、伝統的なUnixシェルのポータブル変種です。
OpenSolarisコードから派生している ため、SVR4 / SVID3レベルのシェルを実装しています。
Bourneシェルは
・スクリプトの移植性テスト。
POSIX.2標準は既存のBourneシェルの動作と互換性のないシェルの要件を導入したため、
BourneシェルはPOSIX準拠ではありませんが、すべてのUnixシェルスクリプト言語の父のままです。
Heirloom Bourne Shellで実行されるほとんどのスクリプト は、21世紀にまだ使用されているUnixシェルで実行されます。
POSIX準拠でBourneシェルで使用可能なシェルスクリプトを記述するのは比較的簡単です。
・レガシースクリプトの処理。
いくつかの歴史的なスクリプトは、Bourneシェル独自の言語機能を使用していました。
それらをポータブルシェル言語に変換するのは難しい場合があるため、
Bourneシェルを使用して実行するのが便利な代替手段です。
・一般的なスクリプト処理。
Bourneシェルは、新しいUnixシェルほど多くの機能を提供しませんが、それでも非常に使いやすいスクリプト言語です。
また、Bourneシェルの言語は20年近く安定しており、この実装でも引き続き安定しています。
これにより、プログラマーが慣れ親しんだBourneシェルは驚くことのないスクリプト言語になります。
これは、新しいシェルの多くとは言えません。
・インタラクティブな使用。
Bourneシェルは、jshとして呼び出され 、端末で実行される場合、ジョブ制御を提供します。
もちろん、コマンド履歴、コマンドライン補完などの派手な機能はありません。しかし、これらの機能を使用すると、
ユーザーの注意をそらす傾向があります。慣れの段階の後、Bourneシェルを使用すると、
より均一で集中的な作業スタイルになります。試してみる。真剣に。
家宝ボーンシェル
家宝のBourneシェルは、伝統的なUnixシェルのポータブル変種です。
OpenSolarisコードから派生している ため、SVR4 / SVID3レベルのシェルを実装しています。
Bourneシェルは
・スクリプトの移植性テスト。
POSIX.2標準は既存のBourneシェルの動作と互換性のないシェルの要件を導入したため、
BourneシェルはPOSIX準拠ではありませんが、すべてのUnixシェルスクリプト言語の父のままです。
Heirloom Bourne Shellで実行されるほとんどのスクリプト は、21世紀にまだ使用されているUnixシェルで実行されます。
POSIX準拠でBourneシェルで使用可能なシェルスクリプトを記述するのは比較的簡単です。
・レガシースクリプトの処理。
いくつかの歴史的なスクリプトは、Bourneシェル独自の言語機能を使用していました。
それらをポータブルシェル言語に変換するのは難しい場合があるため、
Bourneシェルを使用して実行するのが便利な代替手段です。
・一般的なスクリプト処理。
Bourneシェルは、新しいUnixシェルほど多くの機能を提供しませんが、それでも非常に使いやすいスクリプト言語です。
また、Bourneシェルの言語は20年近く安定しており、この実装でも引き続き安定しています。
これにより、プログラマーが慣れ親しんだBourneシェルは驚くことのないスクリプト言語になります。
これは、新しいシェルの多くとは言えません。
・インタラクティブな使用。
Bourneシェルは、jshとして呼び出され 、端末で実行される場合、ジョブ制御を提供します。
もちろん、コマンド履歴、コマンドライン補完などの派手な機能はありません。しかし、これらの機能を使用すると、
ユーザーの注意をそらす傾向があります。慣れの段階の後、Bourneシェルを使用すると、
より均一で集中的な作業スタイルになります。試してみる。真剣に。
2019/08/11(日) 09:48:21.88ID:++HFlOfG
これで(他の人は)理解できたやろ?w
2019/08/11(日) 09:55:06.43ID:FACDvm3m
ムキーってなってるの?そんなに連投して
2019/08/11(日) 10:00:36.39ID:++HFlOfG
あそんでるだけやで、昨日からの続きで
2019/08/11(日) 10:05:58.63ID:lm+uP+yI
お前かわいいな
2019/08/11(日) 10:11:58.37ID:FACDvm3m
でも他人が同じようなことしたらムキーっとなってると言うよねえ
2019/08/11(日) 11:19:28.31ID:OeRZAsFl
>>7,10
derived from OpenSolaris code and thus implements the SVR4/SVID3 level
だから、Version 7 UNIX というのはいきなりっぽい
Version 7 UNIX の sh の重要性がまったくわからんが、SVR4 よりは重要、Version 7 UNIX の正当な流れを汲んだうちでの(ソースレベルで?)一番近いから、Version 7 UNIX としたんじゃないかな、そもそもソコを書いた人は
SVID3 は POSIX以前の時期での標準を作ろうとした規格のようなので、「POSIX shを最もよく実装してる」は無いんじゃないかな。SVID3とPOSIXの差異近似がわからんけど
あんま興味ない(使うことはないから)けどチラっと調べた範囲では。調べてもあんま興味わかないなw
derived from OpenSolaris code and thus implements the SVR4/SVID3 level
だから、Version 7 UNIX というのはいきなりっぽい
Version 7 UNIX の sh の重要性がまったくわからんが、SVR4 よりは重要、Version 7 UNIX の正当な流れを汲んだうちでの(ソースレベルで?)一番近いから、Version 7 UNIX としたんじゃないかな、そもそもソコを書いた人は
SVID3 は POSIX以前の時期での標準を作ろうとした規格のようなので、「POSIX shを最もよく実装してる」は無いんじゃないかな。SVID3とPOSIXの差異近似がわからんけど
あんま興味ない(使うことはないから)けどチラっと調べた範囲では。調べてもあんま興味わかないなw
2019/08/11(日) 12:03:55.85ID:d6NgfAAh
いや〜他人を怒らせないようにしてるんだけど
その当の他人がチガイだとどうしようもないなw
その当の他人がチガイだとどうしようもないなw
2019/08/11(日) 12:07:26.43ID:d6NgfAAh
「ムキー!ボクの意見と違うことを言うやつなんて嫌いだー!」
2019/08/11(日) 12:26:49.70ID:OeRZAsFl
落ち着こうなw
2019/08/11(日) 14:43:52.88ID:++HFlOfG
>>24
> Version 7 UNIX の sh の重要性がまったくわからんが
それな。
「Version 7 UNIX の sh(1) に一番近いのは〜」を最初に書いた当時は
まだレガシーなシェルスクリプトが存在したのかもね
このスレ元々UNIX板にあったわけだし
Heirloom shも(世間がPOSIX準拠になりつつある中)
レガシーなスクリプトを処理するために作った書かれてるし
日付を見ると2010年の話?
一般に商用UNIXと呼ばれるもの(macOSは含めない)が
閉鎖的で情報が共有されなくて、質問されても誰も確認できないでしょ?
Linuxばかり使われるようになった。だからその文章も時代に合わない。
次からは修正しておくよ。
> Version 7 UNIX の sh の重要性がまったくわからんが
それな。
「Version 7 UNIX の sh(1) に一番近いのは〜」を最初に書いた当時は
まだレガシーなシェルスクリプトが存在したのかもね
このスレ元々UNIX板にあったわけだし
Heirloom shも(世間がPOSIX準拠になりつつある中)
レガシーなスクリプトを処理するために作った書かれてるし
日付を見ると2010年の話?
一般に商用UNIXと呼ばれるもの(macOSは含めない)が
閉鎖的で情報が共有されなくて、質問されても誰も確認できないでしょ?
Linuxばかり使われるようになった。だからその文章も時代に合わない。
次からは修正しておくよ。
2019/08/11(日) 15:06:11.53ID:++HFlOfG
テンプレで質問
> ・ワイルドカードは正規表現ではありません。
みんなワイルドカードって呼ぶ? MS-DOSではワイルドカードって言ってたけど
なんとなく最近聞かない気がする。かと言ってグロブと呼ぶか?というとそれも詳しい人ぐらいしか
> ・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
-xオプションと似たやつに-vってのがあるんだね。
みんな使ってる? 俺は使ってみるも、たくさん実行がでてきて面倒くさくて結局見なかったことにしちゃうw
> ・ワイルドカードは正規表現ではありません。
みんなワイルドカードって呼ぶ? MS-DOSではワイルドカードって言ってたけど
なんとなく最近聞かない気がする。かと言ってグロブと呼ぶか?というとそれも詳しい人ぐらいしか
> ・思い通りに動かないときは、まずは sh(1) の -x オプションでトレースしましょう。
-xオプションと似たやつに-vってのがあるんだね。
みんな使ってる? 俺は使ってみるも、たくさん実行がでてきて面倒くさくて結局見なかったことにしちゃうw
2019/08/11(日) 18:20:03.32ID:++HFlOfG
/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった。
今作ってやってみたけど、やっぱり、bashだとecho -n helloは
(POSIXにはない)-nを認識するね。
# which sh
/bin/sh
# /bin/sh
sh-3.2# ls -l /bin/sh
lrwxrwxrwx 1 root root 19 Aug 11 09:14 /bin/sh -> /usr/local/bin/bash
sh-3.2# sh --version
GNU bash, version 3.2.57(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
sh-3.2# sh
sh-3.2# echo -n hello
hellosh-3.2# exit
exit
sh-3.2# bash --posix
bash-3.2# echo -n hello
hellobash-3.2#
前スレ>>996はMacかな? (x86_64-apple-darwin18)って書いてるからそうだろうね。
Macの環境はビルドがおかしいのか時折変な動きをする。
今作ってやってみたけど、やっぱり、bashだとecho -n helloは
(POSIXにはない)-nを認識するね。
# which sh
/bin/sh
# /bin/sh
sh-3.2# ls -l /bin/sh
lrwxrwxrwx 1 root root 19 Aug 11 09:14 /bin/sh -> /usr/local/bin/bash
sh-3.2# sh --version
GNU bash, version 3.2.57(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.
sh-3.2# sh
sh-3.2# echo -n hello
hellosh-3.2# exit
exit
sh-3.2# bash --posix
bash-3.2# echo -n hello
hellobash-3.2#
前スレ>>996はMacかな? (x86_64-apple-darwin18)って書いてるからそうだろうね。
Macの環境はビルドがおかしいのか時折変な動きをする。
2019/08/11(日) 18:24:50.03ID:k+c7cOcw
ええぇ、自分でMacもって言ってなかったかな?
元レスの人のがが何かはわからないが、その可能性はなくもない、だったらの話だが
エアプで見栄であれもこれもと羅列しただけ?w
元レスの人のがが何かはわからないが、その可能性はなくもない、だったらの話だが
エアプで見栄であれもこれもと羅列しただけ?w
2019/08/11(日) 18:24:58.94ID:++HFlOfG
へー、たしかに、macOS Mojaveのデフォルト(homebrewではない)のbash 3.2.57だと
echo -n hello が -n hello になるねw
これはひどいwww
なんでだろ。ちょっと調べてみるか。
その前に一言。だからPOSIX準拠で作れと言っただろー!
echo -n hello が -n hello になるねw
これはひどいwww
なんでだろ。ちょっと調べてみるか。
その前に一言。だからPOSIX準拠で作れと言っただろー!
2019/08/11(日) 18:26:01.24ID:k+c7cOcw
それはお前の自説。うっかりだとしたらしょうがないで済む話
2019/08/11(日) 18:26:26.17ID:k+c7cOcw
てか、自分で確認できるくせにいろいろ妄想吐いていたのどうすんの?
2019/08/11(日) 18:27:23.91ID:++HFlOfG
>>31
デフォルトはHomebrewのbashに切り替えてるのでね。
まさかbashで同じバージョンなのに、Linuxで-nを改行なしオプションと認識して
macOSだと-nを解釈しないとは思わなかった。
まだぐぐってないけど、これ話題になってるんじゃね?
デフォルトはHomebrewのbashに切り替えてるのでね。
まさかbashで同じバージョンなのに、Linuxで-nを改行なしオプションと認識して
macOSだと-nを解釈しないとは思わなかった。
まだぐぐってないけど、これ話題になってるんじゃね?
2019/08/11(日) 18:27:43.86ID:++HFlOfG
>>33
そういうお前の自説を述べられてもw
そういうお前の自説を述べられてもw
2019/08/11(日) 18:28:26.21ID:dSI5JGW8
/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | < まーたはじまった
| ,;‐=‐ヽ .:::::| \_______
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
2019/08/11(日) 18:28:44.04ID:k+c7cOcw
ああ、
>/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
って。ああ、ツッコミどころ満載。わくわくしてきだぞw
そんなグダグダのヤツの傲慢な偉そうなご高説、誰が聞くかっw
>/bin/shの実体が/bin/bashになってる環境がなかったから時間がかかった
って。ああ、ツッコミどころ満載。わくわくしてきだぞw
そんなグダグダのヤツの傲慢な偉そうなご高説、誰が聞くかっw
2019/08/11(日) 18:31:38.54ID:k+c7cOcw
>>31
デフォルトと/bin/shは違うんですけど。/bin/shも書き換えてんのか。OSのアップデートで書き換えられるのに。まあ、ご自由にだから、いちおう信じてあげようw
でも、オマ環を理由にするのは情けないw
結局Appleが悪いにして自分のアホな妄想を否定するのはないんだな。さすがだよ
デフォルトと/bin/shは違うんですけど。/bin/shも書き換えてんのか。OSのアップデートで書き換えられるのに。まあ、ご自由にだから、いちおう信じてあげようw
でも、オマ環を理由にするのは情けないw
結局Appleが悪いにして自分のアホな妄想を否定するのはないんだな。さすがだよ
2019/08/11(日) 18:34:20.63ID:k+c7cOcw
2019/08/11(日) 18:36:37.47ID:++HFlOfG
(macから書き込んでるからID変わってるかも)
まずmacの/bin/shはシンボリックリンクではなく、
またファイルサイズが違っているので /bin/bash と完全に同じものでは無いのがわかる
(おそらくビルドオプションの違いだろう)
$ ls -al /bin/sh /bin/bash
-r-xr-xr-x 1 root wheel 618416 5 4 16:04 /bin/bash
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh
にもかからわず、同じバージョン番号を名乗っている
(ビルドオプションが違うだけだから当然ともいえるが)
$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
$ /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
そして想像つく通り、echo -n の挙動が違う
$ /bin/sh -c 'echo -n hello'
-n hello
$ /bin/bash -c 'echo -n hello'
hello%
まずmacの/bin/shはシンボリックリンクではなく、
またファイルサイズが違っているので /bin/bash と完全に同じものでは無いのがわかる
(おそらくビルドオプションの違いだろう)
$ ls -al /bin/sh /bin/bash
-r-xr-xr-x 1 root wheel 618416 5 4 16:04 /bin/bash
-r-xr-xr-x 1 root wheel 618480 5 4 16:05 /bin/sh
にもかからわず、同じバージョン番号を名乗っている
(ビルドオプションが違うだけだから当然ともいえるが)
$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
$ /bin/bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
Copyright (C) 2007 Free Software Foundation, Inc.
そして想像つく通り、echo -n の挙動が違う
$ /bin/sh -c 'echo -n hello'
-n hello
$ /bin/bash -c 'echo -n hello'
hello%
2019/08/11(日) 18:37:50.08ID:k+c7cOcw
だろ?そう言ってたんだけど。なに追試してんの?確認できてどうすんの?
Appleが悪いでうやむやに?
Appleが悪いでうやむやに?
2019/08/11(日) 18:38:56.40ID:++HFlOfG
2019/08/11(日) 18:40:47.34ID:k+c7cOcw
ユーザ作った時のシェルもデフォルトシェルです。てか、そこはいいよ。信じてあげるって言っているんだから
そんなのじゃなくてな、もっと前にお前がレスしたのを始末つけろよ。なんで逃げる?w
そんなのじゃなくてな、もっと前にお前がレスしたのを始末つけろよ。なんで逃げる?w
2019/08/11(日) 18:45:07.11ID:++HFlOfG
2019/08/11(日) 18:45:52.21ID:k+c7cOcw
いや、その俺の攻撃はいいから、お前のやらかしたのを始末つけなさい
47デフォルトの名無しさん
2019/08/11(日) 18:47:21.37ID:2JPwQqrg やっぱりどこでも動くシェルスクリプトなんて幻想なんだね…
2019/08/11(日) 18:48:15.91ID:++HFlOfG
まあおかげでPOSIX準拠にするべき理由が一つ増えたじゃないかw
同じbashを使っていても、挙動が違う場合がある
POSIX準拠で書きましょう
同じbashを使っていても、挙動が違う場合がある
POSIX準拠で書きましょう
2019/08/11(日) 18:48:32.49ID:++HFlOfG
>>46
なにもやらかしてないけど?
なにもやらかしてないけど?
2019/08/11(日) 18:48:53.43ID:++HFlOfG
>>47
bash依存するとそうなるだけw
bash依存するとそうなるだけw
2019/08/11(日) 18:49:00.05ID:k+c7cOcw
>>ID:++HFlOfG
なんで逃げる、やらかしたのは明らかだろう。カスなのか?
まあ、想像できるよ、常時偉そうにしたいんだもんな。普通のレス、単純なミスに対してもたかーいところからのいきなりなダメだしとか普通だもんな。そんなお前が自分の過ちを認めたらプライドがズタズタにでもなるんだろう
...カスだなw
なんで逃げる、やらかしたのは明らかだろう。カスなのか?
まあ、想像できるよ、常時偉そうにしたいんだもんな。普通のレス、単純なミスに対してもたかーいところからのいきなりなダメだしとか普通だもんな。そんなお前が自分の過ちを認めたらプライドがズタズタにでもなるんだろう
...カスだなw
2019/08/11(日) 18:49:53.93ID:++HFlOfG
宣言
今度から、echo -n を見かけたら、それはPOSIX準拠してないので
printfを使いましょうと書き込むことにする。
今度から、echo -n を見かけたら、それはPOSIX準拠してないので
printfを使いましょうと書き込むことにする。
2019/08/11(日) 18:50:32.73ID:++HFlOfG
2019/08/11(日) 18:50:49.35ID:k+c7cOcw
2019/08/11(日) 18:52:32.37ID:k+c7cOcw
2019/08/11(日) 18:54:05.02ID:++HFlOfG
http://hints.macworld.com/article.php?story=20071106192548833
> This is not a bug. As OS X 10.5 is now certified to follow the Single Unix Specification, its /bin/sh and echo builtin now follow the specification
なるほど。OSX 10.5から仕様変更されたっぽい。
これAppleがオレオレパッチ当ててるのでは?
bash標準ではなさそうな気がする。
流石にAppleのオレオレパッチまではしらんてw
> This is not a bug. As OS X 10.5 is now certified to follow the Single Unix Specification, its /bin/sh and echo builtin now follow the specification
なるほど。OSX 10.5から仕様変更されたっぽい。
これAppleがオレオレパッチ当ててるのでは?
bash標準ではなさそうな気がする。
流石にAppleのオレオレパッチまではしらんてw
2019/08/11(日) 18:54:43.01ID:++HFlOfG
な?さっきから俺はシェルスクリプトの話題をしてる。
ID:k+c7cOcw は、俺の話題しかしてない(笑)
ID:k+c7cOcw は、俺の話題しかしてない(笑)
2019/08/11(日) 18:55:27.94ID:k+c7cOcw
逃げるばっか。自分でMacも使ってるそのためにもPOSIXとかのたまってたのに
2019/08/11(日) 18:56:17.71ID:++HFlOfG
10.4まではmacOSのbashは-nを改行なしと認識していたそうだ
> In fact, I tried echo -n from bash and sh on my 10.4 system and my Linux system and in all cases,
> the -n was recognised as a switch. On both of those machines, /bin/sh and /bin/bash were identical (in fact, on the Linux box, /bin/sh was a symlink).
> In fact, I tried echo -n from bash and sh on my 10.4 system and my Linux system and in all cases,
> the -n was recognised as a switch. On both of those machines, /bin/sh and /bin/bash were identical (in fact, on the Linux box, /bin/sh was a symlink).
2019/08/11(日) 18:56:22.80ID:k+c7cOcw
>>57
俺はとうに終わってるもん。お前もその俺のレスにレスしてんですけど?さすがだな
俺はとうに終わってるもん。お前もその俺のレスにレスしてんですけど?さすがだな
2019/08/11(日) 18:56:59.72ID:k+c7cOcw
(ごまかしたくてしょうがないのがアリアリ)
2019/08/11(日) 18:58:37.20ID:++HFlOfG
2019/08/11(日) 18:59:22.71ID:++HFlOfG
2019/08/11(日) 19:03:26.79ID:k+c7cOcw
2019/08/11(日) 19:04:18.13ID:k+c7cOcw
>>63
意味わからんwさすがだな。POSIX原理主義者はやっぱり変なヤツと思うことにするぞw
意味わからんwさすがだな。POSIX原理主義者はやっぱり変なヤツと思うことにするぞw
2019/08/11(日) 19:05:17.46ID:k+c7cOcw
ああ、やらかしたのをうやむやにするためにか...なるほど
2019/08/11(日) 19:06:30.10ID:++HFlOfG
確認取れた。やっぱり-nを改行なしと認識しないのは、bashの動きではなく
Appleによるパッチみたいだ
http://hints.macworld.com/article.php?story=20071106192548833 の下の方に書いてあるけど
COMMAND_MODE=legacy /bin/sh -c 'echo -n hello'
と書いたら-nを改行なしオプションと認識した(legacy 笑)
この COMMAND_MODE は bashの機能ではなくAppleが用意したもの
https://developer.apple.com/library/archive/releasenotes/Darwin/RN-Unix03Conformance/
macOS特有の動きだから、それを「bashでは」いうのはおかしいね。
Appleによるパッチみたいだ
http://hints.macworld.com/article.php?story=20071106192548833 の下の方に書いてあるけど
COMMAND_MODE=legacy /bin/sh -c 'echo -n hello'
と書いたら-nを改行なしオプションと認識した(legacy 笑)
この COMMAND_MODE は bashの機能ではなくAppleが用意したもの
https://developer.apple.com/library/archive/releasenotes/Darwin/RN-Unix03Conformance/
macOS特有の動きだから、それを「bashでは」いうのはおかしいね。
2019/08/11(日) 19:09:29.22ID:++HFlOfG
>>64
お前が俺にグダグダ言ってる間に答えを見つけたよ。
オマ環じゃなくて、macOS環境
お前は、bashは-nを認識しない(そのまま-nと出力される)と言っていたが、
それが間違いだとわかったよ。
bashは-nを改行なしオプションとして認識するのは正しい。(俺が今までLinuxで検証していたとおり)
ただしAppleがビルドした改変版bashでは、 Single Unix Specificationに準拠するために
POSIXでは規定されてない-nをそのまま出力されるようになってる。
まあこういう違いがあるから、やっぱりPOSIX準拠は大切だね。
お前が俺にグダグダ言ってる間に答えを見つけたよ。
オマ環じゃなくて、macOS環境
お前は、bashは-nを認識しない(そのまま-nと出力される)と言っていたが、
それが間違いだとわかったよ。
bashは-nを改行なしオプションとして認識するのは正しい。(俺が今までLinuxで検証していたとおり)
ただしAppleがビルドした改変版bashでは、 Single Unix Specificationに準拠するために
POSIXでは規定されてない-nをそのまま出力されるようになってる。
まあこういう違いがあるから、やっぱりPOSIX準拠は大切だね。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- VIP過疎すぎてつまらない😭
- 今年の漢字は「高」に決定だよな😔高市が嬉々としてインタビュー応じそう。あと物価高 [929293504]
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 昔の日本人「15円50銭と言ってみろ、はい朝鮮人」 今の日本人「文鮮明はサタンと書いてみろ、はい壺」 [932029429]
- 晋州市で果物輸出が最盛期 [685321817]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
