Вы можете включить тестовый репозиторий:
sudo yum -y install centos-release-scl
sudo yum-config-manager --enable centos-sclo-rh-testing
sudo yum install devtoolset-4-toolchain
devtoolset -4 -набор инструментов устанавливает соответствующие пакеты для c++. devtoolset -3 не работает на Centos6, он доступен в Scientific Linux.
Раскрытие скобок работает только в bash, но не в sh. Убедитесь, что ваш шебанг настроен на bash:
#!/usr/bin/env bash
Сделайте свой скрипт исполняемым и вызовите его напрямую
chmod +x myscript.sh
./myscript.sh
Вы всегда можете проверить расширение, поставив эхо перед своей командой.
echo tar --exclude=out/pictures/\*.{jpg,gif,png,jpeg} --exclude=tmp/\*.{txt,php} --exclude=log/\*.{log,sql} -cvf /backups/mydomain.tar -C /var/www/vhosts/mydomain.com/httpdocs content
Хорошо, сегодня я узнал кое-что важное.
Оболочка bash поддерживает раскрытие фигурных скобок. Оболочка sh (— это оболочка sh? )Однако нет.
И при запуске сценария с sh myscript.sh
, как это сделал я, сценарий был выполнен с оболочкой sh. bash myscript.sh
работает мгновенно.
Но разве ссылка #!/bin/bash
в файле sh не должна заставлять сценарий выполняться в любом случае с помощью bash?
Кто-нибудь может объяснить? Я немного смущен.
Running it as./script.sh will make the kernel read the first line (the shebang), and then invoke bash to interpret the script. Running it as sh script.sh uses whatever shell your system defaults sh to (on Ubuntu this is Dash, which is sh-compatible, but doesn't support some of the extra features of Bash).
Это бы все объяснило, но оболочкой по умолчанию echo $SHELL
в моей Ubuntu является bash (эта цитата из 2010 года, поэтому я предполагаю, что тогда оболочкой по умолчанию в Ubuntu была тире ).
Хотелось бы понять, даже если он работает с bash myscript.sh
.
Попробуйте:
tar --exclude="out/pictures/*.{jpg,gif,png,jpeg}" -cvf /backups/mydomain.tar -C "/var/www/vhosts/mydomain.com/httpdocs content"