Как заявил Суфиан Гори, ошибка, которую вы получаете, указывает на то, что вы пытаетесь выполнить то, что у вас нет прав на выполнение.
Вот несколько вещей, которые стоит посмотреть и попробовать:
Посмотрите, какой wget вы используете, и проверьте права доступа (используйте результат первой команды в качестве аргумента для второй, если аргумент является путем)
type wget
ls -l /path/to/wget
вы должны получить что-то вроде этого:
$ type wget
/usr/bin/wget
$ ls -l /usr/bin/wget
-rwxr-xr-x 1 root root 439944 May 4 17:07 /usr/bin/wget
Если последний x
в -rwxr-xr-x
отсутствует, это означает, что у вас нет разрешения на запуск этой программы. Посмотрите, есть ли другое местоположение с wget в системе, запустив locate bin/wget
; от имени root запустите chmod a+x /path/to/wget
.
Если команда type wget
возвращает что-то еще, начиная с:
wget is a function ...
wget is aliased to 'e1(){ return 126;};e1;'
Тогда псевдоним или функция могут быть проблемой. используйте unalias wget
или unset wget
чтобы очистить их, или просто обновите ваш скрипт, чтобы использовать полный путь к wget (which wget
должен дать вам путь к исполняемому файлу wget).
Если у вас нет прав для устранения проблемы, вы можете заменить команду wlt завитком - он будет функционировать одинаково, аргументы просто разные.
И последнее, на что нужно посмотреть. На терминале введите следующее, чтобы получить bash для вывода подробной информации.
set -x
В вашей команде измените -q
на -S -v -d
чтобы получить подробную информацию от wget. Запустите команду и просмотрите вывод - там может быть подсказка.
Используйте set +x
чтобы отключить отображение команды bashing
Обновить
Что касается вашего комментария: в этой команде должен быть пробел:
ls -l /usr/bin/wget
Что произойдет, если вы введете /usr /bin /wget? Также попробуйте ввести curl без каких-либо аргументов (он ничего не будет делать), просто чтобы проверить, правильно ли он выполняется.
Обновите исходный вопрос с выводом из:
ls -l /usr/bin/wget
- работает 'set -x', затем работает
wget -S -v -d --http-user="xxxxxx" --http-passwd="xxxxxx" http://cdaac-www.cosmic.ucar.edu/cdaac/rest/tarservice/data/cosmic2015/atmPrf/2015.001 -O cosmic_atmPrf_2015.001.tar
не забудьте скрыть свое имя пользователя / пароль, но в противном случае, пожалуйста, покажите полный ответ.
- Затем попробуйте то же самое, когда
set -x
все еще действует, но используйте следующую команду, которая заменяет wget на curl. Замените имя пользователя и пароль на правильные, удалив <> и убедитесь, что между ними есть :
например, -u argonauts: argonautspw
curl -v -u <username>:<password> http://cdaac-www.cosmic.ucar.edu/cdaac/rest/tarservice/data/cosmic2015/atmPrf/2015.001 -o cosmic_atmPrf_2015.001.tar
2-е обновление:
Что выводит echo $PATH
Это работало, когда вы использовали /usr /bin /wget?
Введите export PATH="/usr/bin:$PATH"
А затем проверьте, работают ли wget и другие команды.