Вы используете неправильный ppa. Ppa изменен с
ppa:fkrull/deadsnakes на ppa:deadsnakes/ppa
Мы можем ясно видеть это, если посмотреть на технические детали ppa: apt следует посмотреть на [ ! d2] http://ppa.launchpad.net/deadsnakes/ppa/ubuntu ...
для доступных пакетов, а не
http://ppa.launchpad.net/fkrull/deadsnakes/ubuntuТри способа:
Вы можете заключить скрипт в функцию и использовать только return.
#!/usr/bin/env bash
main() {
...
return 1
...
}
main "$@"
Вы можете проверить, работает ли сценарий с помощью интерактивной оболочки.
if [[ $- = *i* ]]; then
return 1
else
exit 1
fi
Вы можете попытаться вернуться, и если это не удастся, выйдите.
return 1 2>/dev/null || exit 1
Подумайте о команде «источник», как в заявлении «include». Он принимает содержание аргумента и запускает его так, как если бы он запускался напрямую. В этом случае ваша команда является «источником» с аргументом «run.sh», а run.sh выполняется точно так же, как если бы вы набрали содержимое run.sh в свою командную строку.
Когда вы run './run.sh', './run.sh' - ваша команда, и у нее нет аргументов. Поскольку этот файл является текстовым, а не бинарным, ваша оболочка ищет интерпретатора в shebang ('#!' В первой строке) и находит '/ bin / bash'. Итак, ваша оболочка запускает новый экземпляр bash, и содержимое run.sh запускается внутри этого нового экземпляра.
В первом случае, когда bash достигает команды «exit», она выполняется точно так же, как если бы вы набрали его в командной строке. Во втором случае он выполняется в процессе bash, в котором запущена ваша оболочка, поэтому только этот экземпляр bash получает команду «exit».
Когда вы вводите строку в bash, все, что перед первым пространством рассматривается как команда и все, что следует за ними, рассматриваются как аргументы. Команда '.' является псевдонимом «источника». Когда вы запустите ». run.sh ''. ' является собственной командой, поскольку она отделена от аргументов пробелом. Когда вы запускаете «./run.sh», ваша команда «./run.sh» и «.» является частью относительного пути к run.sh с '.' представляя вашу текущую папку.