Idl
たとえば、多くのサブディレクトリを含むディレクトリを追加してこれを実行すると、他のすべてのサブディレクトリIDL_PATH
にあるすべての実行可能ファイルを実行する方法を教えてください。.bashrc
source .bashrc
可能ですか?私が何をしているのか
IDL_PATH=.:+/idl/idl70/lib:/home/cs/Idl ....
このIdl
フォルダには多くのサブディレクトリ(例:xidl
などidl_code
)がありますnet
。ただし、サブディレクトリではなくフォルダからのみファイルを実行できますIdl
。
私が実行したいファイルは.pro
拡張子を持つIDLプロシージャです。すべて.pro
のファイルを1つのディレクトリ(たとえば)に入れると、/home/cs/Idl
proファイル全体が実行されます。
解決策は何ですか?
ベストアンサー1
実行可能ファイルを含む各ディレクトリを個別に追加するか、すべての実行可能ファイルを同じディレクトリにリンクする必要があるようです。
すべてのディレクトリを手動で追加します。
まず、関連ディレクトリのリストを収集します(Linuxを実行しているか、GNUツールがあるとします)。
find /home/cs/Id -type f -executable -exec dirname {} + | sort -u
上記のコマンドはすべての実行可能ファイルを検索し、
/home/cs/Id
そのファイルを含むディレクトリの名前を印刷します。sort -u
各ディレクトリを一度だけ印刷してください。私はいくつかのテストディレクトリを作成したので、私のシステムから次のようになります。$ find /home/terdon/Idl/ -type f -executable -exec dirname {} + | sort -u /home/terdon/Idl/foo/bar/bag/ho /home/terdon/Idl/foo/bar/bag/ho/fa/fe/re /home/terdon/Idl/foo/bar/baz/foo/bar /home/terdon/Idl/foo/bar/baz/foo/bar/baz/foo/bar/baz
それでは、次の形式に追加する正しい形式に変換したいと思います
$PATH
。$ find /home/terdon/Idl/ -type f -executable -exec dirname {} + | sort -u | tr '\n' ':' /home/terdon/Idl/foo/bar/bag/ho:/home/terdon/Idl/foo/bar/bag/ho/fa/fe/re:/home/terdon/Idl/foo/bar/baz/foo/bar:/home/terdon/Idl/foo/bar/baz/foo/bar/baz/foo/bar/baz:
そのコンテンツ(最後のコンテンツを除く
:
)をコピーして、次の項目に追加しますPATH
。PATH="$PATH:/home/terdon/Idl/foo/bar/bag/ho:/home/terdon/Idl/foo/bar/bag/ho/fa/fe/re:/home/terdon/Idl/foo/bar/baz/foo/bar:/home/terdon/Idl/foo/bar/baz/foo/bar/baz/foo/bar/baz"
すべての実行可能ファイルを見つけ、すでにPATHにあるディレクトリにシンボリックリンクします。。
find /home/terdon/Idl/ -type f -executable -exec ln -s {} ~/bin \;
一部のLinuxシステム(Ubuntuなど)では、この
~/bin
ディレクトリが存在する場合はディレクトリに自動的に追加されます。PATH
システムでこれが起こらない場合は、自分で追加してください。PATH="$PATH:/home/cs/bin"