Один из способов сделать это:
#! /usr/bin/env bash
pipe=/path/to/pipe
[ -p "$pipe" ] || mkfifo -m 0600 "$pipe" || exit 1
while :; do
while read -r cmd; do
if [ "$cmd" ]; then
printf 'Running %s...\n' "$cmd"
# sh -c "$cmd" sh
fi
done <"$pipe"
done
Вероятно, раскомментировать строку sh
— плохая идея.
Если вы хотите запустить скрипт, который вы сделали исполняемым, вы должны написать полный путь для его запуска, т.е.
/path/to/script
Если только написать
script
bash будет искать в PATH
файл с именем script
. Грубо говоря, PATH
— это список каталогов, в которых bash будет автоматически искать файлы. Попробуйте
echo $PATH
Если вы открываете терминал в каталоге, где находится script
, вы также можете написать
./script
Скорее всего, это означает, что ваш текущий рабочий каталог не указан в PATH (и это хорошо ).
Попробуйте:
./myScript.bash