2

私はそれを学びました';' コマンドラインの「enter」と同等です。しかし、私にはこのような状況があります。

私のディレクトリの構成は次のとおりです。ディレクトリAにはディレクトリBとCが含まれています。現在ディレクトリBにあります。次のようにします。

CD ../

もちろん、それは私をAに連れて行きます。それから私はします:

CDC

それは私をCに連れて行きます。

ただし、Bから始めて、2つのコマンドをチェーンすると次のようになります。

(cd ../; cd C)

私はまだBにいます。何が起こっているのですか?なぜ私をCに連れて行かないのですか?

4

2 に答える 2

4

実行時に開始するプロセスに( cd ../; cd C)は独自の環境があるため、独自の現在の作業ディレクトリがあります。これは以下で実証できます:

dogface@computer ~/A/B
$ ( cd .. ; pwd ; cd C; pwd )
/home/dogface/A
/home/dogface/A/C

dogface@computer ~/A/B
$ pwd
/home/dogface/A/B

'('および')'なしで試してください...

dogface@computer ~/A/B
$ cd .. ; cd C

dogface@computer ~/A/C
$ pwd
/home/dogface/A/C
于 2013-02-17T05:24:49.430 に答える
3

代わりにこれを試してください:

cd .. && cd C

または、括弧を削除すると、元のコマンドが機能するはずです。

cd ../ ; cd C

括弧を使用すると、コマンドがサブシェルで実行されます。そのため、ディレクトリの変更は表示されません。詳細については、こちらをご覧ください。

于 2013-02-17T05:22:28.483 に答える