$ PATHはネットワークファイルシステムを表します。しばしば便利ですが、時にはひどいです。

$ PATHはネットワークファイルシステムを表します。しばしば便利ですが、時にはひどいです。

私が実行しているいくつかのスクリプトは、他のシステムでホストされているCIFSファイルシステムにあります。ネットワーク経由でファイルシステムをマウントし、$ PATHにスクリプトのリモートロケーションを追加しました。通常の状態では正常に動作します。ただし、リモートコンピュータが何らかの理由でオフラインになったり停止したりすると、すべてのタブの完了またはコマンド入力がリモートホストでプログラムを見つけることができなくなるため、コマンドラインの使用がひどくなる可能性があります。シェルが起動すると、新しい端末ウィンドウを開くことも中断されます。

$PATHルックアップメカニズムを維持しながらこの問題を改善するための良い方法はありますか?

答え1

回避策は、ローカルディレクトリに複数のラッパースクリプトを作成し、リモートディレクトリの代わりに検索パスに配置することです。これは万病の歯磨き粉ではありません。リモートディレクトリの内容が変更されるたびにラッパーを更新する必要があります。ただし、この方法では、プログラムを実行しない限り、リモートファイルにアクセスすることはできません。

完了は時々ファイルが実行可能であることを確認するので、ラッパースクリプトではなくシンボリックリンクが必要です。これはstatファイルへの呼び出しを意味します。ただし、すべてのラッパーは単一の実行可能ファイルへのシンボリックリンクにすることができます。

  • 次の内容を含むローカルディレクトリと~/remote-scripts実行可能ファイルを作成します。~/remote-scripts/.remote-wrapper

    #!/bin/sh
    exec "/remote/path/bin/${0##*/}" "$@"
    
  • 更新するには、~/remote-scripts次のコードを実行してください。

    find ~/remote-scripts -type l -exec rm {} +
    for x in /remote/path/bin/*; do ln -s .remote-wrapper ~/remote-scripts/"${x##*/}"; done
    
  • .~/remote-scriptsPATH

関連情報