Команда не найдена, когда я вызываю `. / Myshell` в ruby

Сегодня попробовал вызвать скрипт из рубина. Мне понравилось вот что:

`./aaa.sh`,

но он вернул «команда не найдена», вот журнал сеанса irb:

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
=> ""

Но если я назову его «ш ааа.ш», он работает.

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

Итак, что с этим не так?


person Rocky    schedule 10.11.2011    source источник


Ответы (1)


На ум сразу приходит пара возможностей:

  1. У вашего aaa.sh файла нет разрешения на выполнение.
  2. Ваш aaa.sh файл не начинается с #!/bin/sh, поэтому ОС не знает, как его выполнить.

Кстати, вы действительно экспериментируете, войдя в систему как root? Это быстрый и простой способ получить действительно плохой день.

person mu is too short    schedule 10.11.2011
comment
И нашел интересное решение. ./aaa.sh\n работает! это почему? мой рубин 1.8.6 - person Rocky; 10.11.2011
comment
@Rocky: \n, как и другие начальные и конечные пробелы, игнорируется, так что это то же самое, что и ./aaa.sh. - person mu is too short; 10.11.2011