☆Linux カーネルの仕組みを勉強するスレ☆
■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin
01/10/02 17:44ID:38KkZsUQカーネル全般について語り合うスレッドです。
0742login:Penguin
03/08/02 10:31ID:0p3phC6s0743login:Penguin
03/08/10 11:15ID:t5VAEY5s0744login:Penguin
03/08/11 11:53ID:5aoknCTf0745login:Penguin
03/08/15 17:22ID:aL8WrViO0746abc
03/08/15 18:53ID:D/wj3em9http://www.sexpixbox.com/pleasant/dx/index.html
0747山崎 渉
03/08/15 22:11ID:ep0zwfOh│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0748山崎 渉
03/08/15 22:35ID:ep0zwfOh│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0749login:Penguin
03/08/16 00:02ID:+8Yy95I50750login:Penguin
03/08/16 00:25ID:CSEwRIa6linux-2.6.0-test3+αで
find -name '*.[ch]'|xargs cat|wc -l
の結果。
5,254,674行
全部把握できたらまちがいなく神。
ちなみに、
find drivers -name '*.[ch]'|xargs cat|wc -l
が、2,516,767行なので、半分ぐらいはドライバだな。
0751login:Penguin
03/08/16 14:38ID:oSWJJuxFInitializing USB Keyboard: modprobe: Can't locate module keybdev
というNGが出ていたので、
make xconfig で
Input core support を m
Mouse support を m
USB support の USB HIDBP Mouse (basic) support を m
としたところ、エラーは消えました。
ですが、マウスを動かしても反応してくれませんでした。
m ではまずいのかと思い、上記のところを y にしてみると今度はNGが
出てしまいました。
もう一つ質問です。
IPv6対応にしたいのですが、Networking options の
The IPv6 protocol(EXPERIMENTAL) を m とし
それによって増えた項目全部を y としたところ
make module_install 実行時
depmod: *** Unresolved symbols in /lib/modules/2.4.21/kernel/net/ipv6/ipv6.o
depmod: find_transform_by_name_R027c72c5
と言われました。
これはどのように対処すればいいのでしょうか?
ifconfigをやってもIPv6のIPがまったく出てこなくて・・・・・・・
長い文章で申し訳ございませんが、ご指導よろしくお願いいたします。
0752login:Penguin
03/08/25 09:44ID:ZYMvu5IH0753login:Penguin
03/08/28 07:10ID:ssaojeEBNFS経由の多段リンクとかしてたらスタックオーバーフロー
とか言ってハングするのだが・・・スタック領域って拡張できるの?
0754login:Penguin
03/08/28 10:48ID:GLbP7FQBカーネルスタック?
カーネル作りなおせば増やせるけど、どこに影響が出るかわからんぞ。
0755login:Penguin
03/08/29 13:31ID:UPtCxfjb多段リンクの意味がよくわからない。
symlink -> symlink -> realfile ってこと?
0756login:Penguin
03/09/01 11:50ID:MpWyDbPw0757eiji
03/09/02 13:56ID:DWK7xXkcお願いします。
0758login:Penguin
03/09/02 14:53ID:BTzOKWIcそんな漠然とした質問に答えられる香具師は居ないと思われ。
カーネルといったって規模が大きいからな。
カーネルとは何ぞや、ということを先ず本か何か読んで調べるのが吉。
0759login:Penguin
03/09/02 15:08ID:pHfbPm/9宿題は自分でやれ。
0760login:Penguin
03/09/03 16:28ID:iWz7WMbL0761login:Penguin
03/09/04 22:39ID:fsrmdR87>>755
ありがとー。実は客にきかれててさー。
カーネルスタックかぁー。触らない方がよさだよなぁ。
でも説明せんといけないし。なんか参考になるサイトないすか?
あ、あと多段リンクはこれであってる。
説明がなかったな。スマソ
一応、制限が5段までで怪しいパッチをあてると8段まで
いけるらしいんだけど、スタックオーバーフローになる。
0762login:Penguin
03/09/05 02:29ID:sR5Y928Wスタックオーバーフローって、カーネルじゃなくて、
アプリケーションがタコなだけな気も。
カーネル的には、symlink は 20段程度やそこらは大丈夫だったと思ったけど。
(つーか、symlink の循環を検出するために、一応、限度を設定してるだけで、
カーネルでのスタック消費がどんどん増えていく、とかはないはず)
いずれにしても、カーネルで他段symlink限界を超えたときは、ELOOP でしょ。
単に、アプリケーションが自前で lstat() や readlink() を使った挙げ句、
爆死してるとかじゃない?
死んでるのは、なんてソフト/コマンドなの?
0763login:Penguin
03/09/05 06:48ID:NvZ0a9K70764login:Penguin
03/09/06 02:38ID:6wacLc6HIPv6対応にしたいのですが、Networking options の
The IPv6 protocol(EXPERIMENTAL) を m とし
それによって増えた項目全部を y としたところ
usagi/doc/CONFIG.linux24
あたりを読め。意味がわからんやつをyにするな。
0765login:Penguin
03/09/08 22:57ID:hx2KIDDjありがとう!そんな答えが欲しかった。
実は客が何やってるのか今一つかめてないから
判ったらまた書くよ。またよろしく。
0766login:Penguin
03/09/15 10:49ID:I+VNLCRD0767login:Penguin
03/10/11 22:31ID:seR0x92U0768login:Penguin
03/10/18 22:04ID:cV4cEMzMアックスってやばいの? 死期神を作っている会社だよね?
0769login:Penguin
03/10/18 23:05ID:iEnCwFBH広報は…昔からなのであきらめて下さい。
0770login:Penguin
03/10/19 04:24ID:vsa+A4dYセミナーがあまりにアホ過ぎて
笑いを通り越した
0771login:Penguin
03/10/19 15:14ID:P4K7wAI70772login:Penguin
03/10/24 01:06ID:8mSLFw8A0773login:Penguin
03/10/24 01:44ID:IA1XAa8m0774login:Penguin
03/11/01 18:25ID:BY3sdtX9それとメモリ領域の確保にはget_free_page、kmalloc、vmallocのどれがベターなんすかね?
調べた限りでは
get_free_page ページフレーム単位での割り当て(4kB)
kmalloc 連続したメモリ領域の確保
vmalloc 非連続メモリ領域の確保
たぶん割り当てるデータの種類・頻度によって使う方法が違うと思うんですが、
いまいちこういうデータにはこれがいい、という判断ができないもので。
0775login:Penguin
03/11/01 18:44ID:UJpXfS4u0776login:Penguin
03/11/01 19:13ID:VqBAcchD0777login:Penguin
03/11/01 21:56ID:GycfD/6pだから、こういうときはkmallocとかいうような場合分けの判断の仕方を教えて欲しいわけです。
初期化の方は?
0778login:Penguin
03/11/01 23:26ID:yJPpr0Et0779login:Penguin
03/11/01 23:57ID:X+/ZvCjkget_free_pagesとvmallocは意味がわからないのなら使う用途はなさそう。
0780login:Penguin
03/11/02 02:01ID:c8ANRrTLchar *とかはどうです?なまじページフレーム以下のバイト数割り当ててページフレーム内でのメモリ断片化を起こすより、ページフレーム単位で割り当てた方がいいんですかね?
でも4kBはでかいものなあ・・・
0781login:Penguin
03/11/02 04:02ID:mdTuavMg結局malloc系はみんな4kbずつ取られちゃうし
そもそもPCならメモリはたくさんだから
1000枚とったって4メガじゃん とか思って
もうめんどくさいしと考えて kmalloc
0782login:Penguin
03/11/02 13:27ID:3SVrF8XB初期化はその通り
一時的に使うか大体1ページ埋まっちゃう時はget_free_pages
それ以外はkmalloc
かな。
細かいことを気にしたくないなら、kmallocでいいんじゃない?
0783login:Penguin
03/11/02 14:11ID:aAzlTdEEそうっすね。kmallocを使うようにします。
ありがとうございました。
0784login:Penguin
03/11/12 19:11ID:j+kuNkZGsizeof(struct rs_table[])
でエラーがでます。
rs_table[]の定義が見つからないようです。
kernelのrs_table[]を参照しているのですが、
これはどこに書いてあるでしょうか?
また、これはどのような意味でしょうか?
わかる方がいましたら教えていただきたいです。
シリアルttyS??やリソースに関係しているっぽいらしいことはなんとなくわかったのですが。。。
0785784
03/11/12 19:14ID:j+kuNkZG0786login:Penguin
03/11/12 19:56ID:QJ3+g/Cf0787login:Penguin
03/11/13 04:48ID:9Axt2Fw50788login:Penguin
03/11/13 04:53ID:9Axt2Fw5sizeof(struct serial_state)*RS_TABLE_SIZE
あたりで手をうったらだめ?
0789login:Penguin
03/11/16 03:56ID:rakWerCm0790login:Penguin
03/11/16 13:56ID:mtRdwIbicurrent->ttyがNULLか見ればいけるかな?
0791login:Penguin
03/11/20 21:17ID:F3gDXEitそれとカーネルスレッドはcurrent->*でpidなどを取得したりはできないのでしょうか?
0792login:Penguin
03/11/20 21:55ID:5PKfc9lP割り込みかどうかの判断であるin_interrput()関数と
合わせて御利用ください。
pidの取得も問題ないはずですが、current->tgidとcurrent->pidが
紛らわしいので注意してください。
0793login:Penguin
03/11/20 23:46ID:F3gDXEitswapperのmm==NULLでcloneのflags | CLONE_VMだからですね.ありがとうございます.
それとin_interruptは自分が注目しているコードの部分は例外や割り込みハンドラの部分ではないのですが,
それでも必要でしょうか?
tgidとpidが紛らわしいというのはどういう意味でしょうか?
>>790
789僕です.遅れましたが,ありがとうございました.
0794790,792
03/11/21 00:46ID:uTRJrHVoそれなら、in_interrput()は使わなくてよいです。
2.6のgetpid()で取れるはtgidなのでtgidを使えば無難です。
今までのlinuxthreadsを使うとpid==tgidなんですが、
NPTLでは、何故かねじれてしまってpidがスレッドIDに
なっています。
0795login:Penguin
03/11/22 05:27ID:Ra8noU1xユーザ空間におけるスタックフレームをカーネル空間からバックトレースして,
それぞれのフレームにおけるリターンアドレスを調べていくことは可能ですか?
またcurrent->mm->start_stack以外にスタックに関する情報はないのでしょうか?
0796login:Penguin
03/11/22 11:56ID:vL0kggqG流れを理解するにはうってつけだけど、長々と文章で説明するより
図とかソースの方が分かりやすかったりする。好みだけど。
たしか、この本が出たときにいろいろ批判をしたスレがあったと
思うけどどこですか?
0797login:Penguin
03/11/22 17:33ID:wN3p4lwgそれなら、ユーザー側のspを読んで追っかけたほうが簡単じゃないかと。
CPUに依存するけど。
0798login:Penguin
03/11/23 04:45ID:eeQbYtxkユーザ側のspの値はcpuの制御回路によってカーネルスタックに退避されるんですよね?
みようとしている部分がシステムコールハンドラのret_from_sys_callのところからなんですが,arch/i386/kernel/entry.S(自分のマシンのアーキテクチャはx86です)によるとそのときのカーネルスタックのレイアウトは,
0(%esp) - %ebx
4(%esp) - %ecx
8(%esp) - %edx
C(%esp) - %esi
10(%esp) - %edi
14(%esp) - %ebp
18(%esp) - %eax
1C(%esp) - %ds
20(%esp) - %es
24(%esp) - orig_eax
28(%esp) - %eip
2C(%esp) - %cs
30(%esp) - %eflags
34(%esp) - %oldesp
38(%esp) - %oldss
となっていて,このoldespがユーザ側のspの値でしょうか?
ところで,スタックに格納されているデータがリターンアドレスかどうかを判別するにはどうすればいいのでしょうか?
スタックフレームごとの区別の仕方もよく分かりません.gccのソースコードとかを読んでみれば分かりますか?
0799login:Penguin
03/11/23 04:48ID:eeQbYtxk0800795
03/11/23 20:21ID:DFb2kUztというかlinuxカーネルの話題とずれた質問してすいませんでした.
0801login:Penguin
03/11/23 22:36ID:SyBc4qQvどこに入るかもCPUによって違うので、必ずカーネルスタックに入っている保証はない。
ただ、コンテキストスイッチした時の値はthreadに入っているはず。
x86でret_from_syscallでみるならoldespでOK。
csも確認してring3に戻ることを確認したほうが良いかもしれない。
判別法は、アドレスが.textの領域に収まっているかどうか確認するのが一番簡単だと思う。
まじめに解析するならデバッグ情報をなめるしかないだろうね。
>>800
ebpは-fomit-frame-pointerされると使えないので注意。
0802login:Penguin
03/11/24 01:42ID:zlJqppRIありがとうございます.
.textに収まっているかどうかというのは,
実行ファイルのコード+共有ライブラリのコード領域に収まっているかどうか
ということですよね?
実行ファイル中のコードはcurrent->mm->start_code,end_codeで参照できると思うのですが,
共有ライブラリの領域もまとめて収まっているかどうか確認する方法はあるのでしょうか?
それとも共有ライブラリのコード領域は別の方法で考慮する必要がありますか?
mmapの引数とかで.
0803login:Penguin
03/11/26 22:35ID:OO1sXefqshared libのロード位置はmm_struct追えばとれると思うけど、
やったことがないので、今一つ自信ない。
ld-linux.soから情報を渡してもらうのが一番確実だろうねえ。
0804login:Penguin
03/12/02 02:21ID:Bf62dDgdありがとうございます.
current->mm->mmap->vm_start,vm_endを使えば,検査したリターンアドレスが動的にリンクされたライブラリのテキストセグメントに収まっているかどうか確認できそうです.
mmapで確保されるメモリリージョンが共有ライブラリのテキストセグメントかどうかはvm_flagsメンバが読みとり・実行可能かつ書き込み不可・プライベートなマッピングであるかどうかで識別するつもりです.
0805login:Penguin
03/12/05 23:56ID:JanVmuB0休眠状態のプロセスの.textや.dataを読み出そうとしています。
実行中のプロセスであればts->mm->start_dataをget_user()でいけるのですが、
休眠中なのでうまくいかないのです。(tsはプロセスディスクリプタへのポインタのつもり)
adr=ts->mm->start_data;
として
ladr=pte_offset(pmd_offset(pgd_offset(ts->mm,adr),adr),adr);
で得られたladrからget_user()すればいいと思ったのですが0読み出す値は0ばかりです。
何が悪いのでしょうか?
0806login:Penguin
03/12/07 13:04ID:8ZucmNpSget_user()ってカレントプロセスを前提にしてなかったっけ?
手抜きな回答ですまぬが、
kernel/ptrace.cのaccess_process_vm()を参考にするよろし。
もっと言えば、デバッガがptrace経由でどうやって他のプロセスの
メモリをアクセスしているか見てください。
0807login:Penguin
03/12/09 00:36ID:S+QZ9CO5ありがとうございます。
とりあえず、ptrace_readdata()の動作を見てみようと思い、モジュールをでっち上げてみました。
しかしinsmod時にptrace_readdataのシンボル解決が出来ないと怒られます。
ちなみにptrace_readdataの行のみをコメントアウトするとinsmod/rmmodが成功します。
includeしてるのはlinux/sched.hとlinux/mm.hです。カーネルを作るときのオプションか何でしょうか?
ところで皆さんはモジュールをいじるような時は何を参考にしています?
やっぱりオライリーの2冊(詳解カーネルとデバドラ)?
ひたすらgrep?
0808login:Penguin
03/12/09 00:47ID:KPHKA0UxEXPORT_SYMBOLされてないsymbolはモジュールからは見えないですよ
0809login:Penguin
03/12/09 01:20ID:S+QZ9CO5ぐぐってみました。
ビンゴのようです。
kernel/ptrace.hにEXPORT_SYMBOL(ptrace_readdata);という記述を加えてカーネルを再構築してみます。
08101
03/12/17 15:08ID:krVj3++U0811login:Penguin
03/12/18 00:07ID:oQuTHDGhどうしても、コンパイルがうまく行きません。
どなたか、ご教授よろしくお願い致します。
TargetはSH4、Hostは、Linux7.2に組み込Linuxをインストールしてあります。
クロスコンパイル等の環境構築は終わっており、組み込みLinuxのカーネルコンパイルも
コンパイルも無事通ります。それなのに、ドライバをコンパイルすると次の
ようなエラーが出てしまいます。
{standard input}: Assembler messages:
{standard input}:4144: Error: unknown opcode
{standard input}:4235: Error: unknown opcode
{standard input}:5719: Error: unknown opcode
{standard input}:6018: Error: unknown opcode
{standard input}:6295: Error: unknown opcode
{standard input}:6693: Error: unknown opcode
{standard input}:6780: Error: unknown opcode
{standard input}:7053: Error: unknown opcode
{standard input}:7085: Error: unknown opcode
{standard input}:7103: Error: unknown opcode
{standard input}:7239: Error: unknown opcode
{standard input}:7725: Error: unknown opcode
{standard input}:8404: Error: unknown opcode
make: *** [linux_ud/sylx.o] Error 1
もちろん、ネットで検索はしました。
gcc,nm,ar,as,g++,gdb,ld,objcopy,objdump等に問題があるのでしょうか?
よろしくお願い致します。
0812login:Penguin
03/12/18 00:09ID:MBnnQKSz0813login:Penguin
03/12/18 00:13ID:3f1SJdSQsylxがナニモノかしらんが、インラインアセンブラでも使ってるんでねーの?
ソース見せれ。
0814login:Penguin
03/12/18 00:19ID:hosf0Cpdhttp://pc.2ch.net/test/read.cgi/linux/1063594836/130
0815login:Penguin
03/12/18 00:57ID:wHzkPy4DLinux7.2てのはRedHatLinux7.2って事?
この手の問題だったらホストとターゲットのカーネルのバージョンを明らかにすべき。
あとはgcc,binutils,newlib,glibcあたりも。
ドライバを作るってのは
make modules
ってやった時?それともどっかから落としてきたソースをコンパイルしてるの?
MakefileのCCをbfdnameにした?
情報不足で状況が掴めないです。
0816login:Penguin
03/12/18 01:02ID:lp9NfDxYマルチにレスすんな
0817login:Penguin
03/12/18 01:11ID:wHzkPy4D組み込みスレにもマルチしてますね。
ただ、このスレにはお世話になった(なってる)ので、ついレスしてしまいました。
大局的に見るとやっぱりスルーすべきなんでしょうか・・・
0818login:Penguin
03/12/20 23:51ID:p8OBVrj+カーネル詳説では全然解説してないし。
例えば Netfilter を読むとっかかりになるようなサイトとか。
NIC ドライバは作った事あるんですが、ドライバより上位の層について
知りたいです。
0819login:Penguin
03/12/21 16:07ID:1QwJVAKL冗談抜きでソースじゃないか?
0820login:Penguin
03/12/21 16:12ID:u/cH/qKM両方の条件を満たしそうなのは http;//lxr.linux.no/source/ とか?
0821login:Penguin
03/12/21 18:51ID:1QwJVAKLhttp://lxr.linux.no/source/ か!
ナイス屁理屈
0822818
03/12/21 20:42ID:R8FN9n5Sしれないですが・・・(あるいはいまさら TCP/IP の解説でもないだろって事かも)
がんばって読んでみます
0823login:Penguin
03/12/21 21:11ID:1QwJVAKLリチャードさんの本を読破しよう
0824login:Penguin
03/12/22 18:23ID:jTZcEXDh>>823の言うように"Guru of the Unix gurus"であるStevens先生の本を読むべき。
0825login:Penguin
03/12/23 00:32ID:J48VmNLA出力するデータがもし4kBを越える場合,どのようにコーディングすればいいのでしょうか?
本を読んだり,ソースコードを眺めたりしたんですが,いまいちよく分かりませんでした.
proc_file_readを読むと,越えていても最後まで出力してくれそうな感じですが・・
どうかよろしくお願いします.
0826825
03/12/23 00:39ID:J48VmNLA「コーディング」というのはread_procの所です.
というか,proc_file_readでwhileループしているので,read_procではcount以下の読み込みを実装するだけでいいのでしょうか?
0827login:Penguin
03/12/23 20:48ID:k2EKtndjどっちかってゆーと、各プロトコルの実装の説明でなく、sk_buff の
各フィールドの使われ方とか Netfilter とかみたいな割とジェネリックな部分の
説明があればな、と。贅沢いってスンマソン
>>826
proc_file_read を読んだんだったら、それを信じて書けば動くよ。変な挙動だけど。
うろ覚えなので間違ってるかもだけど、普通に off を見て返す内容を決めても
いいっぽいんだけど、proc だとサイズベースで考えるのは面倒だから、
「何回目の呼び出しか」 を off で判断できるようにしてるっぽい。
*start に 1 を入れとくと、次は off が +1 されて呼ばれる (実際に返したバイト数
増えるのではなく) ので、こっちは off を見て返す内容を決めれば良い、と。
一回に返すサイズは count 以内にしておく事、と。
(実際には多少溢れても OK だけど、将来どうなるかわからんし)
多分そんな感じ。色々試せばわかると思う。 というか俺も proc_file_read() を見て
そう思ったから、正式な手順ではないかもしれないけど。
0828login:Penguin
03/12/23 22:40ID:uwJyCcqDkcoreあたりをパクるとか。
>>827
オライリーのカーネル本は?
skbのあたりは書いてあったはず。netfilterは無かったかも。
0829login:Penguin
03/12/23 23:15ID:k2EKtndjカーネル本はほとんどネット周りは書いてなくて、
ドライバ本は skb については 「ドライバ作者が見るべき所」 だけだから・・・
skb のフィールドって意外と増えたり減ったりしてるみたいだから
やっぱ自分で読むしかないんだろうとは思ってるんですけど。
ちなみに kcore は普通の read_proc の作り方とはちょっと違いますよ。
とはいえ、単にメモリのある領域をダンプしたいだけならあっちの方が楽そうです。
でもそれならキャラデバ書いたほうが楽かも?
0830login:Penguin
03/12/24 03:43ID:CT6SNhsXありがとうございました.色々試してみます.
0831login:Penguin
03/12/30 00:01ID:j3HEXdDL0832ヽ(´ー`)ノ
03/12/30 22:27ID:w1ByrpYn付属のドキュメントじゃダメなん?
Documentation/* とか、{menu,x,g}config の時み見れるヘルプとか。
0833login:Penguin
03/12/31 00:05ID:4ZezigAR本であれば以下はどうか
Linuxカーネル設定ガイド
ttp://www.amazon.co.jp/exec/obidos/ASIN/4798100889
0834login:Penguin
03/12/31 09:04ID:CE2m/NA+ヨゴシの本なんか誰が買うか
0835login:Penguin
04/01/07 01:47ID:EmIK8cJsそもそも、仮想メモリ空間にマッピングされる領域には、
どのような領域があり、かつ、その領域の見積方法は
どうするのでしょうか?以下の領域を推測しています。
・OSカーネル
・ドライバ
・プログラムソース
・スタック
・ヒープ
この他にも、I/Oバッファや共有メモリ, ディスクキャッ
シュなども入るのでしょうか?
また、作成したプログラムのソースコード部分の領域の
大きさの見積方法はあるのでしょうか?(例えばC言語)
以上、よろしくお願いします。
0836login:Penguin
04/01/07 22:21ID:x+u/tPyi分からん用語は使わずに何が知りたいかをくだ質スレに書け。
0837煽りイカ
04/01/11 21:46ID:PPiKfNSH始めたんですが、既にインクジェットのカートリッジを10個以上消費
しています。この戦いはいつまで続くんでしょうか?
プリントアウトした紙は、片っ端から製本業者に出しているので、
この出費もばかになりません。
0838login:Penguin
04/01/11 22:09ID:26nuhaia本当に紙のものが欲しいなら、すでに印刷して製本したものが書店で売ってあ
るから買えばいいですよ。でも紙で読むのはつらい。
lxr等のツールを使って眺めるとか--これも自前でやらなくてもlxrのサイトに
lxrかけたソースがおいてあるからwebブラウザで眺める--か、make tags(もし
くはTAGS)してviなりemacsで読むのがいいと思いますよ。
概要をつかむなら、まずディレクトリの構造を適当にながめたあと(or眺めつ
つ) init/main.c の start_kernel() から読み始めるのがいいと思います。
大変だけど、続ければ必ず読めるし、得るものは大きいから、がんばって。
0839login:Penguin
04/01/12 17:15ID:lpS+N9kGマジレスカヨ
0840login:Penguin
04/01/13 01:07ID:odyLziqAたとえば echo $SHLVL と打ちますと 2 とでたり
bash bashと続けて打てば 4となります
0841login:Penguin
04/01/13 07:19ID:yowy6EM0# そのさい誘導されたことを付記してください。でないとマルチ呼ばわりされそう。
■ このスレッドは過去ログ倉庫に格納されています