1

私は最近、デフォルトのシェルを bash ではなく IPython に切り替えました。それには、automagic、autocall などの機能をオンにして IPython プロファイルを作成しました。実行可能ファイルを IPython 環境から見えるようにするために、構成ファイルに%rehashx自動的に実行するように含めました。これに関する問題は、 などの名前にダッシュが含まれるコマンドxdg-openがマジック コマンドに正しく変換されないため、シェル エスケープ構文を使用して実行する必要があることです。そのようなコマンドのbashのような呼び出しをより厳密にエミュレートできるように、ダッシュでコマンドを自動化する方法はありますか?

4

1 に答える 1

2

あなたはこれと一緒に暮らす必要があります。

識別子が言語の境界 (この場合は bash/Python) を越えて処理される場合、言語の識別子の規則で異なることが許可されていると問題が発生します (この場合、-bash では許可されていますが、Python では許可されていません)。これを解決する 1 つの方法は、名前マングリングです。xdg-open場合によっては、問題のある文字を許可された文字に置き換えることによって(たとえばxdg_open)、これが行われます。名前の衝突を避けるために (たとえば、 のxdg_openほかに既に がある場合xdg-open)、置き換えは、文字の 16 進値 (たとえば-_2d_by_5fなど) などでエスケープされることがよくあります。おそらく、次のようなものを含む URL 行からこれを知ることができます%20など。これはすべて、すぐに読めなくなるか、名前マングリングのルールが非常に複雑になります (トレードオフがあります)。

于 2012-05-23T12:27:13.900 に答える