3

私は、Bash シェルや Sh シェルのような「MY OWN COMMAND INTERPRETER (SHELL)」というミニ プロジェクトに取り組んでいます。これまで、ls、ps、pwd、date などの事前定義されたすべてのコマンドを実行できました。これを除いて、入力リダイレクト (<)、出力リダイレクト (>)、PIPE (|) 機能などの他の操作を実装しました。これに加えて、pid、ppid、quit、hist などの独自のユーザー コマンドを実装しました。

vvdnlt208@vvdnlt208-Vostro-3446:~/project/Vector/sourabh/unix/proj2$ ./my_sh  
<1 SOURABH> ls
 a     cd.c       execute.o  inredir.c  main.o   multiexec.o  my_sh   sh.c                sigign.c  test.c
addhist.c  dir        header.h   inredir.o  Makefile     mypipe.c     outredir.c  showhist.c  sigign.o  tetest.c
addhist.o  execute.c  inredir    main.c     multiexec.c  mypipe.o     outredir.o    showhist.o  test2.c
<2 SOURABH> ps
PID TTY          TIME CMD
6120 pts/10   00:00:01 bash
6510 pts/10   00:00:00 grep
6512 pts/10   00:00:00 grep
6514 pts/10   00:00:00 grep
6516 pts/10   00:00:00 grep
7772 pts/10   00:00:00 my_sh
7774 pts/10   00:00:00 ps
<3 SOURABH> pwd
/home/vvdnlt208/project/Vector/sourabh/unix/proj2
<4 SOURABH> date
Fri Nov 14 16:44:24 IST 2014
<5 SOURABH> 
<6 SOURABH> 
<7 SOURABH> 
<8 SOURABH> hist
1 ls
2 ps
3 pwd
4 date
8 hist
<9 SOURABH> ls >a.txt
<10 SOURABH> pid
7772
<11 SOURABH> ppid

しかし、cdコマンドの実行に問題があります...

<12 SOURABH> cd
cd: No such file or directory
<13 SOURABH> cd dir
cd: No such file or directory
<14 SOURABH> 

誰かが私にそれを自分で実装するように言った...これを行うのを手伝ってください。前もって感謝します。

4

3 に答える 3

5

cdはプログラムではなく、組み込みコマンドです。組み込みコマンドはシェルに直接組み込まれています。

を実装するcdには、基本的に

  1. chdir()現在のディレクトリを変更するために使用します
  2. いくつかの環境変数を更新します (Klas Lindback が言ったように: OLDPWDand PWD)
于 2014-11-14T11:32:09.353 に答える
0

私のプロジェクトでは、chdir() を使用して cd コマンドを実装しましたが、動作します。すべてのプロセスには独自の PWD (Present Working Directory) があります。シェルもプロセスであり、デフォルトの PWD はその親 (./my_sh を実行した bash シェル) の PWD です。

于 2015-02-06T11:40:56.893 に答える