2011-11-10 8 views
1

今日、私はRubyからスクリプトを呼び出しようとしました。私は「SHのaaa.sh」としてそれを呼び出す場合、ruby​​で `。/ myshell`を呼び出すとコマンドが見つかりません

irb(main):012:0> `which aaa.sh` 
=> "/root/rocky/aaa.sh\n" 
irb(main):013:0> `aaa.sh` 
(irb):13: command not found: aaa.sh 
=> "" 
irb(main):014:0> `./aaa.sh` 
(irb):14: command not found: ./aaa.sh 
=> "" 

しかし、私はこのようでした:

`./aaa.sh`, 

が、それは「コマンドが見つからない」が返さ、ここでのirbのセッションログですできます。

irb(main):015:0> `sh aaa.sh` 
=> "aaa.sh\ntest.rb\n" 

これは間違っていますか?

答えて

3

カップルの可能性がすぐに頭に浮かぶ:

  1. あなたaaa.shファイルには、実行権限を持っていません。
  2. のファイルがaaa.shで始まらないため、OSで実行方法がわかりません。

脇に、rootとしてログインしている間に実際に実験していますか?それは本当に悪い一日をすばやく簡単にする方法です。

+0

うわー、ありがとう!私は#!/ bin/shが欠けていました。 – Rocky

+0

そして、私は面白い解決策を見つけました。 './aaa.sh \ n'が動作します!何故ですか?私のルビーは1.8.6です – Rocky

+0

@Rocky: '\ n'は他の先頭と末尾の空白のように無視されていますので、'。/ aaa.sh'と同じです。 –