shopt работает в командной строке, не найденной, когда выполнено в сценарии

Я пишу сценарий для копирования некоторых файлов вокруг и пытаюсь использовать shopt -s dotglob позволять CP скопировать dotfiles как .jshint и этажерка.

Я могу работать shopt -s dotglob непосредственно в ударе запрашивают без ошибки. Однако выполнение сценария бросает ошибку:

script.sh: 81: script.sh: shopt: not found

Я запускаю этот скрипт в оболочке удара с заголовком хижины #!/usr/bin/env bash. Ошибочная строка:

shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/

Ничто не находя полезным на Google, никакая идея, что проблема здесь?

14
задан 27 August 2012 в 10:16

2 ответа

Чтобы сформировать ответ из комментариев:

Многие люди по привычке запускают свои скрипты с помощью sh вместо bash. Это хорошая практика, если речь идет о переносимости, но многие люди делают это потому, что копируют то, что они видели, не понимая этого.

Если ваш скрипт не должен запускаться на нерабочей системе Linux (например, запуск скриптов оболочки на Android-устройствах совсем другой), я рекомендую использовать в начале строку Bash shebang:

#!/bin/bash

Эта строка, когда это первая строка в скрипте, определяет, какой интерпретатор (shell, такой как bash или sh, Python, и т.д.) вызывается для его выполнения. Если вы используете вышеуказанную строку, вы получите то же самое поведение (почти), что и из командной строки, предполагая, что вы используете оболочку по умолчанию. Если по причинам переносимости или предпочтений вы используете другую строку shebang, знайте, что вам придется обратиться к документации на оболочку, на которую вы ссылались, , даже если оболочка, на которую вы ссылаетесь, является симлинкией к Bash.

24
ответ дан 21 October 2019 в 12:21

Вам нужно выйти из zsh и активировать bash, как показано:

exec bash

Выполните команду

source ~/.bashrc

, после чего вы можете реактивировать zsh:

exec zsh

Надеюсь, что это поможет

0
ответ дан 23 November 2019 в 03:17

Другие вопросы по тегам:

Похожие вопросы: