2

$PATH にある ~/bin/ にあるスクリプトを作成しています。システムのどこからでもこのスクリプトを呼び出して (GNU/Linux ですが、これは問題ではありません)、現在のディレクトリの内容を読み取りたいと考えています。

残念ながら、スクリプトは常に ~/bin/ の内容、つまりスクリプト自体が配置されている場所を読み取ります。

例:

  # pierre@autan: ~        < 2013_07_20__11_18_57 >
cat ~/bin/test.r 
#!/usr/bin/rebol
rebol []
print what-dir

  # pierre@autan: ~        < 2013_07_20__11_18_57 >
pwd
/home/pierre

  # pierre@autan: ~        < 2013_07_20__11_18_57 >
test.r
/home/pierre/bin/

/usr/bin/rebol のインタープリターは Rebol2/view です。Rebol3 を使用した場合、結果は同じですが、~/bin/ シンボリック リンクが逆参照されるだけです。

  # pierre@autan: ~        < 2013_07_20__11_18_57 >
cat ~/bin/test.r 
#!/usr/bin/rebol3
rebol []
print what-dir

  # pierre@autan: ~        < 2013_07_20__11_18_57 >
test.r
/home/pierre/heaume_pierre/bin_scripts/

  # pierre@autan: ~        < 2013_07_20__11_18_57 >
ll | grep bin
lrwxrwxrwx  1 root   root         26 déc.  29  2010 bin -> heaume_pierre/bin_scripts/

これで、コンソールから期待どおりに動作します。

  # pierre@autan: ~        < 2013_07_20__11_18_57 >
rebol
>> print what-dir 
/home/pierre/

ドキュメントを参照しましたが、役立つものは見つかりませんでした。

これを達成する方法を知っている人はいますか?これは、ある種のユーティリティを作成したい人にとって、非常に一般的な問題であることに注意してください。

4

2 に答える 2

4

Rebol2 と Rebol3 の両方system/options/pathがあなたの味方です。

于 2013-07-20T09:49:25.977 に答える
0

システム/オプション/パスへの変更ディレクトリの後、期待どおりに機能するようになりました。

  # pierre@autan: ~        < 2013_07_20__16_40_26 >
cat ~/bin/test.r 
#!/usr/bin/rebol3
rebol []
change-dir system/options/path
print what-dir

  # pierre@autan: ~        < 2013_07_20__16_40_26 >
test.r
/home/pierre/

ほとんどのスクリプトの開始時にこれを行います。ありがとう、ワントム!

于 2013-07-20T14:42:08.197 に答える