У меня есть сценарий bash, в котором я хотел бы проверить, успешно ли работает псевдоним для активации conda и, если нет, выдает ошибку. Хотя скрипт выполняется без сообщения об ошибке, ни один из echo
не печатается. Как я могу это исправить?
Мой файл ~/.bashrc
содержит
### shortcut to activate installed miniconda2
activate_conda() {
export PATH=$HOME/miniconda2/bin:/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games;
}
alias activate_conda="activate_conda"
И когда я запускаю следующий скрипт bash
#!/bin/bash
#Check if activate_conda command runs successfully
activate_conda
if [ $? -eq 0 ]; then
echo "activate_conda was successful"
exit 0
else
echo "activate_conda was not successful.
Please check your .bashrc file"
exit 1
fi
#another function to check the same alias
if activate_conda ; then
echo "Command succeeded"
else
echo "Command failed"
fi
скрипт запускается, но нет команд echo распечатать. Я думаю, что вышеупомянутые функции действительны для фактической сборки в терминальных командах. Но я пытаюсь запустить alias
как команду.
Ваш скрипт не выполняется, потому что ни псевдоним, ни функция оболочки не доступны из скрипта bash. В сценариях используйте либо исходную команду вместо псевдонима, либо включите определение функции в вызывающий сценарий. В конце концов, вы можете ввести код для функции в сценарий из другого файла, если хотите использовать одну и ту же функцию в нескольких сценариях (см. help source
в терминале).
Чтобы узнать, как проверить, успешно ли выполнена команда, см. Как проверить, успешно ли выполнена команда? .