Похоже, что obisplit
ведет себя иначе, если вывод перенаправлен.
Вы можете попросить GNU Parallel вывести в файлы:
seq 10 | parallel --results output_{} echo this is input {} >/dev/null
(или, если ваша версия старше:
seq 10 | parallel echo this is input {} '>' output_{}
)
Он создаст output_#
,output_#.err
,output_#.seq
.
Если вы правильно добавили путь, вам просто нужно назвать имя скрипта, поэтому xyz.sh
вместо использования./xyz.sh
Используя ./
, вы говорите своей оболочке искать в текущем рабочем каталоге и запускать оттуда xyz.sh.
--
Примечание: вам не хватает символа / в начале пути к каталогу, он должен быть PATH=$PATH:/home/somefolder/test
, и вы должны добавить только каталог, а не полное имя исполняемого файла.
Явное указание пути к исполняемому файлу заставит оболочку попытаться использовать этот путь для выполнения исполняемого файла.
Если сказать ./myscript
и если myscript
не находится в текущем каталоге, вы получите сообщение об ошибке «Нет такого файла или каталога». Это означает, что не использует переменную $PATH
.
$PATH
должен быть:
-разделенным списком каталогов (, а не файлов ), в которых оболочка будет искать исполняемые файлы, если в командной строке не указан путь. Добавление текущего каталога(.
)к переменной PATH
(представляет собой потенциальную угрозу безопасности, см. " Безопасно ли добавлять. в мой PATH? Почему? " ).
Другое простое решение, когда вы просто хотите получить доступ к одному исполняемому файлу за пределами вашего обычного $PATH
— это использовать псевдоним:
alias myscript=/path/to/myscript
(это находится в вашем файле инициализации оболочки, вероятно, .bashrc
дляbash
).
В псевдониме необходимо указать полный абсолютный путь к исполняемому файлу.