Если я правильно понял, вы хотите создать уровень косвенности, где программа, которую вы указываете через shebang в сценарии, сама является сценарием с shebang. Linux принимает вложенные шебанги, а другие варианты Unix - нет. Поэтому вы можете поместить
#!/home/me/groovy/groovyrun
в начало ваших скриптов Groovy и
#!/bin/sh
в начало /home/me/groovy/groovyrun
.
Чтобы выполнить groovyclient
или groovy
из скрипта-обёртки, используйте что-то вроде
#!/bin/sh
if …; then
exec groovyclient "$@"
else
exec groovy "$@"
fi
"$@"
означает список параметров, переданных скрипту, скопированных точно в том виде, в котором они есть (правильно сохраняя пробелы и прочее в аргументах). Не используйте $*
, который объединяет аргументы с пробелами между ними (так что groovyrun 'foo bar'
вырождается в groovyrun 'foo' 'bar'
), и никогда не оставляйте расширение переменной без кавычек.
Что касается exec
, см. причина для exec в скриптах-обертках
В конце я просто удалил пакет с помощью pip, а затем переустановил его с помощью yaourt.
Это происходит, когда вы устанавливаете что-то, что переопределяет уже существующий файл. Вы можете проверить, кто является владельцем пакета этого файла, с помощью
pacman -Qqo /path/to/file
, а затем, если он никому не принадлежит, вы можете просто удалить этот файл и продолжить.
И да, используйте yay
, yaourt мертв.