4

Linuxのシェルスクリプトでディレクトリを変更することに行き詰まっています。

#!/bin/sh
cd /driver

上記はディレクトリを変更しません。シェルは独自のコンテキストで実行されているため、変更されたドライブを (ドライバーに) Linux 端末に提供できません。

しかし、私が cd /driver ls を与えるとls、ドライバーディレクトリで適切な出力が再び得られますdriver directory

実際に変更されたパスで端末を取得するのを手伝ってくれる人はいますか(into driver)

4

5 に答える 5

2

「ソースscript_name」を実行します。ディレクトリを変更します

于 2013-08-15T07:58:23.843 に答える
1

スクリプトは実行可能ファイルです。

#!/bin/sh
cd /driver

を削除します#!/bin/sh

cd /driver
于 2013-08-15T08:05:45.783 に答える
0

上記の問題の根本原因を確認するために、次のことができます

次のようなスクリプトを作成します-

read a
echo "You entered : $a"

それを保存し (script.sh など)、必要に応じて権限を変更します。

同じタブで「ps」コマンドを実行し、シェル pid (p1 など) をメモします。

スクリプトを実行します(つまり、./script.sh)

スクリプトは入力を求めますが、入力を提供しません。別のタブで、「ps -ef |」のようなものを実行します。grep pts'. ここでは、2 つのシェル プロセスがあることがわかります。ppid が前のシェル、つまり p1 の pid と等しいもう 1 つのシェルがあります。

つまり、基本的にシェル スクリプトを呼び出すたびに新しいプロセスが作成され、したがって新しいコンテキストが作成されます。

これが役に立ったことを願っています。

于 2015-02-25T05:42:29.467 に答える