再び覆う'。 'または'ソース'

再び覆う'。 'または'ソース'

誤ってスクリプトから不正な環境を得ました。 「キャンセル」、つまり復元して以前の環境を復元する方法はありますか?

もちろん、明らかな答えはクリーンシェルセッションで始まるものですが、他の解決策があるかどうか疑問に思います。

更新:私はいくつかの変数を設定するスクリプトに言及していました。

答え1

いいえ、スクリプトを取得すること(またはスクリプトを「単純に」実行すること)の影響を排除する一般的な方法はありません。これは、ファイルの削除など、元に戻せないコマンドがあるという事実による当然の結果です。スクリプトに元に戻せないコマンドが含まれている場合、そのスクリプトを取得した結果も元に戻せません。

答え2

「キャンセル」、つまり復元して以前の環境を復元する方法はありますか?

いいえ、一般的に自動方法はありません。

しかし、私たちはあなたが何を書いたのかわかりませんsource。たぶん、元に戻すのと同じくらい簡単かもしれません(たとえば、タスクを変更するだけです)。PATH以前知られていたものから)。

答え3

もしあなたなら事前に知っておいてくださいこれを行うには、サブシェルsourceでコマンドを実行してサブシェルを終了してその効果を復元できます(シェルまたは環境変数を設定するようにスコープされている場合)。

したがって、実行すると:

(source set-variables; run-command-with-variables); run-command-without-variables

...これでrun-command-with-variablesこれらの変数が設定されますが、run-command-without-variables設定されません。


また、どのシェルかを識別します。機能スクリプトを取得するためにこれらの関数に関連付けられているメタデータを調べて設定するので、理論的に指定された(パラメータ化された)ファイルで定義されている他のすべての関数をオフにするためにシェル関数またはソース可能スクリプトを作成することができます。ただし、関数以外の変数の場合、設定を解除できる情報は保存されていません(以前の値を識別するのははるかに少ない)。

関連情報