私はCで非常に基本的なシェルを書いた。入力を読み取り、それを実行しますsystem(lineCopy);
(lineCopyは入力のコピーです)。を除くすべてのコマンドが正常に実行されます。別のディレクトリにアクセスcd
しようとすると、現在のディレクトリにそのまま残ります。存在しないディレクトリにアクセスcd
しようとすると、 just like it should というメッセージが表示されます。しかし、存在するディレクトリで cd を試みると、コマンドは読み込まれますが、同じディレクトリに残ります。現在、PWDを保存する変数は常に更新されるため、これはできません。他のすべてのコマンドは完全に実行されます。しかし、なぜできませんか?cd
sh: 1: cd: can't cd to /some_nonexistant_directory
cd
ベストアンサー1
環境変数を変更してみましたが、うまくいきませんでした。システムは環境と現在の作業ディレクトリを継承します。したがって、各システムコールは親システムから現在の作業ディレクトリを継承します。