BASH - команда xargs не найдена

Я пытаюсь создать скрипт BASH, который будет запускать для меня команду. Это пример одной из команд:

function systemStart {
    ./ORBMarkerDetection $1 $2 $3 | xargs -n3 java -jar ../../system/layers/out/artifacts/layers_jar/layers.jar 
}

Но когда это запускается, я получаю сообщение об ошибке (ссылаясь на приведенную выше строку):

./runActivities.sh: line 7: xargs: command not found

Я могу успешно запустить эту команду в терминале, поэтому я не уверен, почему она не будет работать в сценарии BASH?

Я вызываю функцию так:

systemStart $PATH/1.1/cupCupboard.png $PATH/1.1/kitchenDoor.png $PATH/1.1/tap.png

person Colin747    schedule 01.04.2015    source источник
comment
Значение $PATH в скрипте отличается от значения в терминале?   -  person user4098326    schedule 01.04.2015
comment
Я проверю, но команда скопирована прямо из терминала. Путь такой же.   -  person Colin747    schedule 01.04.2015
comment
Я пробовал жестко кодировать путь, и проблема все еще та же. Кажется, нет никаких скрытых дополнительных символов.   -  person Colin747    schedule 01.04.2015


Ответы (2)


Очевидно, вы используете имя переменной PATH для своих целей, но вы не можете этого сделать -- PATH является зарезервированной переменной, и ее изменение приведет к тому, что оболочка не найдет команды (не только xargs, но практически любую команду).

В общем, вам следует избегать использования имен переменных в верхнем регистре; тогда вы можете быть уверены, что ваша переменная никогда не будет конфликтовать со встроенной переменной оболочки.

person tripleee    schedule 01.04.2015

(Возможно, вам потребуется указать полный путь в вашем скрипте?)

Команда which может указать вам полный путь к вещам.

robert@debian:~$ which xargs
/usr/bin/xargs

locate также может сообщить вам расположение файлов

Наконец, полный поиск в файловой системе методом грубой силы с помощью find:

robert@debian:~$ find / -name "xargs" 2> /dev/null
/usr/bin/xargs
person mrflash818    schedule 02.04.2015