これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド envpathp です。
プログラム:
NAME
envpath - パス変数の高度な操作
SYNOPSIS
使用方法の詳細については、「-help」オプションを指定してこのスクリプトを実行してください。
DESCRIPTION
コマンドラインを解析し、指定されたパス変数を変更し、残りを実行します
引数。 XNUMXつのモードがあり、 シンプルな と 高度な:
SIMPLE モード
シンプル モードは、パスを指定するためのプラットフォームに依存しない代替構文を提供します。
ここで、パス区切り文字は「,」であり、環境変数は @NAME@ で展開できます。
例えば、
envpath PATH=@PATH@,/usr/ucb -- printenv PATH
「/usr/ucb」を $PATH に追加し、execs printenv パス. 「--」はオプションです。
それぞれ「+=」または「=+」を使用して、先頭または末尾に追加することも指定できます。
# /usr/ucb を先頭に配置
envpath PATH+=/usr/ucb -- printenv PATH
# /usr/ucb を後ろに配置
envpath PATH=+/usr/ucb -- printenv PATH
シンプル モードでは、このスクリプトのみが必要です。 Env::Path をインストールする必要はありません。
高度な モード
詳細モードでは、基本的に Env::Path の機能へのコマンドライン アクセスが提供されます (参照)。
インストールする必要があります。 「-E」フラグは、操作するパス変数を選択します。
フラグはそれに対する操作を指定します。 例えば
envpath -E MANPATH -A / tmpに -R / usr / share / man -N -U -- 男 ...
MANPATHを取り、追加します / tmpに それに、「への参照を削除します。/ usr / share / man"、 取り除く
存在しないすべてのディレクトリ (「-N」) を実行し、冗長なエントリを削除 (「-U」) してから実行します。 man.
-Whence オプションはパターンを許可します。 したがって
envpath -W "cat*"
cat* に一致する PATH 上のすべてのプログラムを検索します。
クリアケース ウィンキンズ
このスクリプトの動機の大部分は、ClearCase ビルドで使用することでした。 あなたなら
ClearCase について知っている、または気にかけている場合は、読み進めてください。 通常、ビルド中 (ビルド時だけでなく、
ClearCase)、PATH、CLASSPATH、LD_LIBRARY_PATH などのパス変数は厳密に
制御されます。 XNUMX つの選択肢は、実行中にこれらの静的な値を環境に強制することです。
もう XNUMX つは、ユーザーがパスを適切に設定することを単純に要求/期待することです。
ただし、これらのそれぞれが微妙なビルド エラーまたは実行時エラーを引き起こす可能性があり、
新しいユーザーは、個人的な環境がまさにそうでなければならないため、最新の状態に追いつく必要があります。
もう XNUMX つの一般的な選択は、依存を回避して、Makefile 内で完全なパス名のみを使用することです。
まったく検索パス上。 多くの場合、これが最善の方法ですが、ClearCase を抑制できます
まばたき。 たとえば、あるタイプの ascii ファイルをバイナリで生成しているとします。
ビルドしたばかりの実行可能ファイル:
$(INCDIR)/foo.h: $(BINDIR)/foomaker $(BINDIR)/foomaker ...
これに関する問題は、$(BINDIR) に「solaris」などのプラットフォーム部分が含まれている可能性が高いことです。
または「hpux」。これにより、他のプラットフォームでも foo.h ファイルでウィンクすることができなくなります。
アスキーなのに。 これと同じことが、標準のビルド済みユーティリティでも発生する可能性があります
それは、異なるプラットフォームの異なる場所にあります。 たとえば、「yacc」は / usr / bin on
Linux および Solaris の /usr/ccs/bin。
その場でパスを変更できます:
$(INCDIR)/foo.h: $(BINDIR)/foomaker PATH=$(BINDIR)$(SEP)$$PATH foomaker ...
しかし、これには同じ問題があります: $(BINDIR) と $PATH は文字どおりに展開されるためです。
ビルド スクリプト内では、winkins が抑制されます。 これを使用したソリューションは次のとおりです 環境パス:
$(INCDIR)/foo.h: $(BINDIR)/foomaker envpath PATH=@BINDIR@,@PATH@ foomaker ...
これにより、BINDIR と PATH の評価が隠されます。 クリアメイク 何も見ない
リテラル、したがってウィンキンのフィールドをクリアします。 もちろん 環境パス できる
これ以上ですが、それが書かれた本来の理由です。
onworks.net サービスを使用してオンラインで envpathp を使用する