トップページunix
987コメント278KB

シェルスクリプト総合 その21

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2012/11/15(木) 18:57:33.11
シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)がデフォルトです。
 bash/zsh/ksh/ashなどに依存する場合は明示しましょう。
 Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
 FreeBSDユーザは/bin/shの正体がashなので注意。
 v7 shに一番近くて、現役のshは、OpenSolaris由来のheirloom sh。
  http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/sh/
  http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
 (理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
 manや参考リンクを見ましょう。
 aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
 正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆーな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
 awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
 「そういうのはperl使いましょう」と回答するのはやめましょう。
 安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
前スレ
シェルスクリプト総合 その20
http://toro.2ch.net/test/read.cgi/unix/1339083351/
0459名無しさん@お腹いっぱい。2013/04/17(水) 20:23:31.15
まあ色々だね
headとかの+スイッチとか、commの-123とか、
0460名無しさん@お腹いっぱい。2013/04/17(水) 20:43:44.35
head/tail の +スイッチは、ポジックス()によって潰されました
0461名無しさん@お腹いっぱい。2013/04/17(水) 21:33:08.69
>>459
headの + ってどんなのなのなの?
0462名無しさん@お腹いっぱい。2013/04/17(水) 21:44:13.25
head +3
ファイルの末尾3行を除いて表示
0463名無しさん@お腹いっぱい。2013/04/17(水) 21:52:02.52
head -n -3 で桶
0464名無しさん@お腹いっぱい。2013/04/17(水) 21:57:46.87
ddは許してやれ。ccに名前取られてスネてる。
0465名無しさん@お腹いっぱい。2013/04/17(水) 21:58:20.81
+ じゃなくて - の話だが、

tail -5 とかが突然使えなくなって tail -n 5 に書き換えろという話だったが
既存スクリプトへの影響が大き過ぎて
結局 tail -5 とかの形式だけは使えるようにされたんだよな。
0466名無しさん@お腹いっぱい。2013/04/17(水) 22:17:23.08
cc if=hoge.c of=hoge optimize=2 strip=true library=libXt,libX11,libm
0467名無しさん@お腹いっぱい。2013/04/17(水) 23:03:00.57
老害のせいで、むちゃくちゃな言語
0468名無しさん@お腹いっぱい。2013/04/18(木) 09:10:20.74
>>460
sort も忘れるな。
0469名無しさん@お腹いっぱい。2013/04/18(木) 09:17:44.11
>>458
psがカオスなのはlinuxだけじゃね?
BSDとSysVはまったく違うけど、それぞれの中では一貫してる。
linuxはそのまったく違うものを両方使えるようにした上で
さらにgnu long optionsも採用するとかいうバカなことをやって混乱の極みに。
0470名無しさん@お腹いっぱい。2013/04/18(木) 22:08:44.74
某書に、使うpsのオプションで侵入者の素性が分かるというエピソードがあったな
0471名無しさん@お腹いっぱい。2013/04/21(日) 20:35:11.01
/bin/sh、もう使いたく無くなって来た‥
ユーティリティのコマンドオプションに統一性が無いって、どうしてこうなってしまったんだろう
0472名無しさん@お腹いっぱい。2013/04/21(日) 20:41:46.60
/bin/shが使いたくないなら/bin/tcshでも
/usr/local/bin/bashでも/usr/local/bin/zshでも
好きなシェル使えばいいじゃない
0473名無しさん@お腹いっぱい。2013/04/21(日) 21:12:21.58
>>472
いまどき、/bin/bash じゃないの?
0474名無しさん@お腹いっぱい。2013/04/21(日) 21:18:16.31
FreeBSDですしおすし
0475名無しさん@お腹いっぱい。2013/04/21(日) 21:27:21.72
>>471 のいう/bin/shって、/bin/shに限らずシェル一般っていう意味だろ。
ユーティリティのコマンドオプションに統一性が無いとか言ってるし。
それはどのシェルでも変わらない。
0476名無しさん@お腹いっぱい。2013/04/21(日) 21:27:45.57
UNIX じゃないじゃん
0477名無しさん@お腹いっぱい。2013/04/21(日) 21:29:31.89
シェル一般?に対して、/bin/sh とは言わないでしょ?
0478名無しさん@お腹いっぱい。2013/04/21(日) 21:31:17.80
>>477
471はよくわかってないからシェル一般に対して、/bin/shと言ったりする。
0479名無しさん@お腹いっぱい。2013/04/21(日) 21:33:16.90
>>477
もし本当の/bin/shの意味だったら、
「ユーティリティのコマンドオプションに統一性が無い」
の文章につながらない。
0480名無しさん@お腹いっぱい。2013/04/21(日) 21:37:08.55
そこまで推し量ってやることも無いでしょ?
ほんとのとこは本人しかわかんないんだし。
「ユーティリティのコマンドオプションに統一性が無い」ってのも、
別にその「シェル一般?」とも関係ないし
0481名無しさん@お腹いっぱい。2013/04/21(日) 22:11:48.86
>>471
そろそろ正解発表を頼む。
04824712013/04/21(日) 22:40:23.29
ユーティリティのコマンドオプションに統一性が無い、どうしてかな
というのが今の疑問です

/bin/shならびにUNIXシェル一般に興味無くしたってのは早とちりでしたご免ください
いつもお世話になってます
0483名無しさん@お腹いっぱい。2013/04/21(日) 23:02:39.87
オプションを統一するなんて無茶な話だし、使っていればおぼえれるし、ヘルプも参照しやすいからあまり気にしたことなかったなぁ。

バージョン表示とオンラインヘルプだけは、統一あっても良い気がするな。
たまーに違うのが混ざっているからなやましい
0484名無しさん@お腹いっぱい。2013/04/22(月) 00:00:32.49
オンラインヘルプが統一されてないってのは、man と info が混在してることを指して言ってるの?
0485名無しさん@お腹いっぱい。2013/04/22(月) 00:04:04.98
オプションって、なんで棒1本と2本とバラバラなの?
--help
とか
-h
とか

省略形と思ったら、そうでもないし、どうなってんの
0486名無しさん@お腹いっぱい。2013/04/22(月) 00:05:00.13
>>482
君が1人で全部作り直せば互換性がうまれるよ。でもショートのオプション数は限りがあるね。どのように設計するのか見物です。
>>483
man hogeで統一されている。Sh組み込みはshのmanかhelpにしかなかったりするか。
0487名無しさん@お腹いっぱい。2013/04/22(月) 05:09:33.94
>>485
具体的にどのコマンドのどのオプションが不満で
自分が開発者ならどういう名前に変更するか挙げてみてくれ
0488名無しさん@お腹いっぱい。2013/04/22(月) 05:15:05.29
>>485
基本的に、GNU形式の長いオプションが -- で、
旧来の短い(一文字)オプションの場合が - でしょ?

ちなみにコマンドラインから直接実行する場合は短いオプションで、
スクリプト等に記述する場合は(分かりやすくするため)長いオプションを使ったりする。
0489名無しさん@お腹いっぱい。2013/04/22(月) 14:59:57.78
>>488
オプションの意味がアプリごとにバラバラで統一感無い
ってのが統率取れてない印象を与えると思う。
0490名無しさん@お腹いっぱい。2013/04/22(月) 16:13:56.87
>>489
アプリの中で統一されていれば、他のアプリと異なっていても構わないと思うが。
他のアプリやインターフェイスと統一するなら、どこまで統一するのかその範囲は?
Windows/MacOSX/Unix系を全て統一?
GNUアプリを全て統一?
0491名無しさん@お腹いっぱい。2013/04/22(月) 17:08:44.33
>>490
そんなでかい話じゃないが、紳士協定レベルというか
オプションの意味のガイドラインくらいあってもよかったよな
-vや-hの意味くらい統一しとけよという
0492名無しさん@お腹いっぱい。2013/04/22(月) 17:21:27.15
まぁ今から統一するのは無理だから
あきらめて覚えるしかないよ。
0493名無しさん@お腹いっぱい。2013/04/22(月) 19:12:57.59
一番意味がたくさんあるオプションってどのアルファベットかな
-iや-rなんかはけっこう上位に食い込むと思う
0494名無しさん@お腹いっぱい。2013/04/22(月) 19:14:57.79
あきらめておぼえないw
0495名無しさん@お腹いっぱい。2013/04/22(月) 19:26:36.66
統一されたところで完全じゃなきゃ結局man引くことになるじゃん
んで他のプラットフォームは統一されてんのかっていう
0496名無しさん@お腹いっぱい。2013/04/22(月) 19:35:58.93
一つ、コマンドの引数は、操作対象(主にファイル名)を表すものとす
一つ、コマンドの動作に関するオプショナルな指定は、ハイフン+アルファベット一文字とす
一つ、オプションのアルファベットは、それを表す英単語の先頭の一文字になるよう努めるものとす

複数のオプション指定はハイフンの後に同時に書いても良いことにする(例 ls -la)
追加で指定してもよいオプションではなくて、原則指定すべきサブコマンドはハイフンはなしにする(例 tar x)
こういうのも暗黙のルールに加わった。

こういうルールは、決まりがあるわけではなく、コマンド作成者がなんとなくそうしている約束事だった。

コマンドがバージョンアップし、オプションが増え、文字が足りなくなったり、被ったりが目立つようになった。
さらにBSD系、System/V系に分岐し、それぞれでコマンドのオプションが追加された。
コマンドの私家版が独自に配布されたりして、もう大変な状況に…

GNUコマンドが降臨し、ハイフン+一文字形式に加えてハイフン+ハイフン+文字列(等号+文字列)形式が普及、今日に至る。

-h や -v が同じじゃないのは、別々の意味で先に使っていたから仕方ない。
0497名無しさん@お腹いっぱい。2013/04/22(月) 19:57:02.89
ここでどれだけ文句言ったってオプションが統一される訳ないんだから
オプション統一して欲しい人はコマンドラインアプリの作者にメール送ったらいいんじゃないの
それか自分自身か思うオプションに変更するラッパーでも書くか。
0498名無しさん@お腹いっぱい。2013/04/22(月) 21:07:57.82
>>486
用語間違えてた?
manでなく、--helpとかで出てくるやつをオンラインヘルプ言うと思ってた。

一応、GNU系ならhelpとversionはコード規約的な指標にはなってた気がする。helloworldレベルだけど。。。
0499名無しさん@お腹いっぱい。2013/04/22(月) 22:47:59.51
>>498
http://www.gnu.org/prep/standards/standards.html#Command_002dLine-Interfaces
へえ、こんなのあるんだ
0500名無しさん@お腹いっぱい。2013/04/22(月) 22:55:36.85
GNU的なものを作るための規範として、その名もGNU helloというプログラムがあるな。
0501名無しさん@お腹いっぱい。2013/04/22(月) 23:43:29.70
あれは規範ていうか例じゃね。
0502名無しさん@お腹いっぱい。2013/04/22(月) 23:44:15.62
なんで開発者って、思いつきでオプション作るの?
おまえのせいでみんな迷惑してるんだけど
0503名無しさん@お腹いっぱい。2013/04/23(火) 00:00:55.59
んじゃどうやってオプション決めればいいの?
0504名無しさん@お腹いっぱい。2013/04/23(火) 00:06:06.60
憲法で規則を作ればいい
0505名無しさん@お腹いっぱい。2013/04/23(火) 01:45:12.76
憲法が何かわかってないだろ。
0506名無しさん@お腹いっぱい。2013/04/23(火) 02:12:16.82
>>502
そんなにみんなが使ってくれるとは思わなかったから。コマンドラインよりAPIから呼ぶのが殆どとかもあるかもだけど。

>>498
そういう解釈もあると思う。
ただドキュメント読むためだけにプログラムを実行するのもなぁ。
http://sp.e-words.jp/w/E382AAE383B3E383A9E382A4E383B3E38398E383ABE38397.html
印刷物ではなく、コンピュータ上で閲覧する 形で用意されているヘルプ文書のこと。
0507名無しさん@お腹いっぱい。2013/04/23(火) 11:32:05.75
条約でないと
0508名無しさん@お腹いっぱい。2013/04/23(火) 12:21:44.52
>>502
他のコマンドのことを考慮はしたと思うが、後から作られるコマンドのオプションと
バッティングしないことまでは考えられなかったであろう。

私は迷惑してないですけどね。
0509名無しさん@お腹いっぱい。2013/04/23(火) 13:15:52.18
こんな些細なこと(コマンドオプション)、どうでもいいんじゃないの?
嫌だからといって、じゃぁ何に乗り換えるの?
まともにPOSIXにも準拠してない閉鎖的なOSは、コマンド体系やオプションに統一が図られてるのかな?
てか、それ以前に使えないでしょ?
0510名無しさん@お腹いっぱい。2013/04/23(火) 13:27:09.12
>>509
×使えない
○役に立たない
0511名無しさん@お腹いっぱい。2013/04/23(火) 14:27:53.80
ls コマンドのヘルプを見ようと思って-hつけたり
バージョンを見ようと思って-vつけたりしたあの日
0512名無しさん@お腹いっぱい。2013/04/23(火) 16:21:59.64
話はそれるが、
ヘルプなんてのはコマンドに内蔵するべきでないと思ってたな。
プログラム動作に必要ない、人間だけのためのただの文字列で
コマンドのバイナリファイルや実行時メモリを消費するんだから。
マニュアル(man lsとか)として分離してれば
プログラム動作のみ必要な時はマニュアルをアンインストールして
HDDサイズを縮小することもできた。
0513名無しさん@お腹いっぱい。2013/04/23(火) 16:24:56.09
いまやそんなにちまちま節約する必要もなくなったな。
0514名無しさん@お腹いっぱい。2013/04/23(火) 16:30:30.62
catmanが贅沢だった時代だな。
0515名無しさん@お腹いっぱい。2013/04/23(火) 16:31:20.11
DD-WRTで、ロム4MBに、カーネル+root+busyboxとか諸々全部詰め込む関係で、
容量節約のためにヘルプもエラーメッセージもほとんど出ない。

たまに現地でいじる必要性が出たり、即席で診断スクリプト組んで走らせたいときに、
やっぱ不便だった。不便な理由は、使えるオプションが極端に少ないのだが、
どのオプションが使えて、どれが使えないかを調べることすら出来なかったため。
0516名無しさん@お腹いっぱい。2013/04/23(火) 16:51:44.59
愛三かマルツへ行きます。
技能試験の器具セットはどっちのやつがいいでしょうか。
05175162013/04/23(火) 16:52:17.09
すんません。
0518名無しさん@お腹いっぱい。2013/04/23(火) 16:53:45.87
実体と簡易ヘルプが一つのファイルになってるなんて素敵じゃないか。
リソースフォークはいらないけどな。

そもそもUNIXは独禁法絡みで汎用コンピュータが作れないAT&Tが、
ドキュメント作成システムということで開発継続出来たのが発端。
だからオンラインドキュメントであるmanpageや
/usr/docの下のドキュメントが充実していた。
0519名無しさん@お腹いっぱい。2013/04/23(火) 16:58:11.06
〜config みたいにシェルスクリプトでもヘルプ表示してたり
0520名無しさん@お腹いっぱい。2013/04/24(水) 04:02:05.02
debぱけーじはxz増えてるよ



オンラインヘルプて公式とかミラーで公開してる分じゃねーのか
0521名無しさん@お腹いっぱい。2013/04/24(水) 05:55:35.41
ローカルHDD上にあるのにオンラインマニュアルとか言うんだよな。
1台のホストマシンに複数のシリアル端末からログインしてたからそれがオンラインだったということか
0522名無しさん@お腹いっぱい。2013/04/24(水) 20:34:17.68
変数STRには文字列が入っているとして、
$STRと${STR}と"${STR}"って展開され方違いますか?
echoで出して見ると同じに思えるんですが、
コマンドのパラメータにSTRを渡したときに
書き方によって正しく動くときとダメなときがあって
使い分けがさっぱりわかりません。

そもそも代入する時点で、どういうときに明示的に
ダブルクォートで括るべきなのか、サンプル見てもまちまちで
よくわかりません。

誰か、ズバッと教えてくれませんか?
0523名無しさん@お腹いっぱい。2013/04/24(水) 20:39:15.37
>>522

STR='*'
echo $STR
echo "$STR"

を試してみろ。$STR と ${STR} は同じ。
0524名無しさん@お腹いっぱい。2013/04/24(水) 20:41:53.61
>>523
結果はどうなるの?
0525名無しさん@お腹いっぱい。2013/04/24(水) 20:43:15.39
その例じゃカレントディレクトリにファイルがない場合は
同じになるんじゃなかろうか。
nullglobがshoptされてない限り。
0526名無しさん@お腹いっぱい。2013/04/24(水) 20:44:04.14
試してみろとか偉そうなこといってるやつがウッカリミスの無能じゃんwww
0527名無しさん@お腹いっぱい。2013/04/24(水) 20:54:08.19
>>525
その裏返しで、カレントディレクトリにファイルがある場合は違うんだから、
試してみろ、でいい。「カレントディレクトリにファイルがある場合」とか
ヒント言っちゃ駄目。本人に試させたいんだから。

>>526 馬鹿は引っ込んでろ
0528名無しさん@お腹いっぱい。2013/04/24(水) 22:02:49.41
>>522です。
試してみました。

実行時に変数は展開されるけど、ダブルクォートはそのまま
コマンドに渡される、ってことでしょうか?

出してくれた例だと、スクリプト実行時に
echo *

echo "*"
となっているってこと?

んー、スクリプト言語はよくわからん。。
0529名無しさん@お腹いっぱい。2013/04/24(水) 22:09:30.10
echo じゃ分かりにくいかもな

STR="hoge fuga"
touch $STR
ls -l
STR="hoo bar"
touch "$STR"
ls -l
0530名無しさん@お腹いっぱい。2013/04/24(水) 22:41:49.07
やってみた。

スペースやらワイルドカードやらチルダやらが入ってたら
展開のされ方によって動作が変わってくる可能性があるってことか。

明日出社したらスクリプト見直してみるわ。
0531名無しさん@お腹いっぱい。2013/04/24(水) 23:44:50.78
以上、3時間のコンサル料として30万円、末締めで請求させていただきますね
0532名無しさん@お腹いっぱい。2013/04/25(木) 06:48:29.69
>>530
>スペースやらワイルドカードやらチルダやらが入ってたら

チルダは展開されない。スペースとワイルドカードの類が解釈される。
0533名無しさん@お腹いっぱい。2013/04/26(金) 10:49:11.44
ファイルに追記しようとしてるんですが

"/var/www/html/logs/ sample >/dev/null 2>&1 &" >>/var/log/sample

と書くと「そのようなファイルやディレクトリはありません」と表示されます。
こういう場合はどう書けばファイル自体はありますし権限やオーナーも全て許可している状態です。
0534名無しさん@お腹いっぱい。2013/04/26(金) 11:00:58.38
>>533
どのコマンドを実行したいの。
0535名無しさん@お腹いっぱい。2013/04/26(金) 11:11:31.71
/var/www/html/logs/ sample >/dev/null 2>&1 &
という文字列を
/var/log/sample
に追記したいだけなんですが
どこかでファイルやディレクトリとして判断されているようです。
0536名無しさん@お腹いっぱい。2013/04/26(金) 11:24:05.04
>>535
あんた、UNIXの標準入出力とリダイレクション、全然理解してないね
0537名無しさん@お腹いっぱい。2013/04/26(金) 11:26:12.00
すいません

そういったことを理解していないと質問してはいけないということですね
シェルスクリプト側で出来れば便利そうだったんですが別の方法を考えてみます。
ありがとうございました。
0538名無しさん@お腹いっぱい。2013/04/26(金) 11:45:45.96
スレ違いの典型を見た
0539名無しさん@お腹いっぱい。2013/04/26(金) 11:54:12.16
>>535
echo "/var/www/html/logs/ sample >/dev/null 2>&1 &" >>/var/log/sample
0540名無しさん@お腹いっぱい。2013/04/26(金) 12:12:44.98
シェルは最初のパートをコマンドとして実行しようとするので
その出力したい文字列をコマンドとして探して、無いとエラーを出している。
リダイレクト先のファイルがない、と言っているのではなく、コマンドがない、といっている。

その文字列を出力するコマンドを、まず書かなくてはならない。例えば echo

echo "xxxxx yyy > zzz" >> sample
0541名無しさん@お腹いっぱい。2013/04/26(金) 18:11:51.46
ディレクトリを実行しようとしておいて何か言われたらすぐ逆ギレかよ
0542名無しさん@お腹いっぱい。2013/04/26(金) 18:30:22.16
>>541
>>533が&までの文字列を実行しようとしていることは分かれ。
0543名無しさん@お腹いっぱい。2013/04/27(土) 00:38:46.41
とある理由で cat の出力を何もしないで素通しする必要があるんですが
何が最適でしょうか? 今は sed '' を使ってます。

cat hoge.txt | sed ''
0544名無しさん@お腹いっぱい。2013/04/27(土) 01:20:56.41
>>543
sed に渡すってこと?
なんでもいいなら、

cat hoge.txt | cat

では?
0545名無しさん@お腹いっぱい。2013/04/27(土) 01:31:18.66
''必要かな?
cat hoge.txt | sed
だとまずいsedってある?
0546名無しさん@お腹いっぱい。2013/04/27(土) 01:36:03.55
>>544
あ、cat でいいんですね、思いつかなかった・・・
ありがとうございました。

>>545
ほんとだ、'' は要らないですね。
0547名無しさん@お腹いっぱい。2013/04/27(土) 10:13:59.37
>>545
GNU sedは '' ないとマズ杉
0548名無しさん@お腹いっぱい。2013/04/28(日) 00:16:28.95
シェルスクリプトで、セキュリティ上パスに気をつけろという話がありますが、

1. コマンドを絶対パスで呼ぶ(/bin/ls とか)
2. PATHをスクリプトの冒頭で適切な値に再設定する

ですよね? でこれらに関して何ですが、とりあえず両方やった方がいいですかね?
あと、1. に関してはやはり test コマンドなんかも if /usr/bin/[ ... ] ; then ... fi って
やることになりますよね?

あと、1. で readonly LS=/bin/ls して ${LS} と呼ぶとしたら安全性は落ちますかね?
0549名無しさん@お腹いっぱい。2013/04/28(日) 00:24:04.62
少なくともbashの[ は組込み
0550名無しさん@お腹いっぱい。2013/04/28(日) 00:24:25.98
>>548
いったいどんな環境で使ってるの?
で、そこには悪意のあるユーザーがいて、悪意のあるプログラムに ls とか名前をつけてそこら中に散りばめられてる可能性があるの?
0551名無しさん@お腹いっぱい。2013/04/28(日) 00:44:59.50
/bin/lsがrmに置き換えられているかもしれないからハッシュ値を確認しないとな
0552名無しさん@お腹いっぱい。2013/04/28(日) 02:56:32.10
で、md5sum 自身も書き換えられてるとかw
0553名無しさん@お腹いっぱい。2013/04/28(日) 09:03:13.99
>>548 ですが、
とりあえず/binや/usr/binがあるパーティションは書き込み不能。
データ用の書き込み可能なパーティションが別にあります。
基本的にはログイン不能なシステムです。がネットワークのやり取りとか
はあるので何がどうなるかは...

システムのデーモンから呼ばれるスクリプトを作ろうとしていて、
一応、パスが改ざんされる可能性を考えています。
0554名無しさん@お腹いっぱい。2013/04/28(日) 09:10:39.10
どんなにスクリプトの書き方に注意しても人為的なミスは防げないんだし
その辺真面目にやるならAppArmorとかSELinuxとかその辺使った方がいいような希ガス
0555名無しさん@お腹いっぱい。2013/04/28(日) 09:20:46.40
>>553
>何がどうなるかは… (わからない)ようなシステムかよwww
パスが改ざんされるって、「誰」のパスが改ざんされるの?
そんなことする奴がいたらそもそもパスの改ざんだけですまんだろ?
0556名無しさん@お腹いっぱい。2013/04/28(日) 09:23:21.45
>>548
1.と2. 両方やった方がいい。

readonly PATH='' ってやって、PATHなしに強制する (''は書かなくても同じ意味)
これで、lsとか絶対パスでしか実行できなくなる。

testについては >>549 の指摘通り内部コマンドなので、
if [ ... ]; then って普通に書いていい。

readonly LS=/bin/ls はどっちでもいいかな。
見やすくなるかどうかくらいの意味なので。
0557名無しさん@お腹いっぱい。2013/04/28(日) 09:30:53.19
>>556
ダウト。
甘いな。
PATH='' だと、逆にカレントディレクトリ上のファイルが実行できる。
PATH=. と同じ状態。かえって危ない。

PATH=/dev/null がお勧め。
0558名無しさん@お腹いっぱい。2013/04/28(日) 09:44:14.51
あほばっかだな(笑)
PATHだけ取り上げて安全とか危ないとかwww
素直にセキュアOSの適用を考えろよ
■ このスレッドは過去ログ倉庫に格納されています