Вопрос по bash – / usr / bin / env плохой интерпретатор

1

Попытка заставить инструменты командной строки EC2 Amazon работать. Вот как выглядит мой .bash_profile. Я получаю сообщение об ошибке: /users/zmjones/.ec2/bin/ec2-add-keypair: / usr / bin / env: плохой интерпретатор: операция не разрешена

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:$PATH
PATH=/opt/local/sbin:/usr/local/bin:/usr/x11/bin:/usr/texbin:$PATH
PATH=/usr/local/texlive/2011/bin/x86_64-darwin:$PATH
PATH=/Library/Frameworks/EPD64.framework/Versions/Current/bin:$PATH
EC2_HOME=~/.ec2
PATH=$PATH:$EC2_HOME/bin
EC2_PRIVATE_KEY=`ls $EC2_HOME/pk-*.pem`
EC2_CERT=`ls $EC2_HOME/cert-*.pem`
JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home/

export PATH

Кто-нибудь видит что-то не так с этим? Я не уверен, что я делаю неправильно.

Выход изls -l /usr/bin/env

-r-xr-xr-x  1 root  wheel  34720 Sep  8  2011 /usr/bin/env
zmjones-mbp:.ec2 zmjones$ /usr/bin/env
TERM_PROGRAM=iTerm.app
TERM=xterm
SHELL=/bin/bash
TMPDIR=/var/folders/x3/vrw5029d1rj9xblj8bmxl0m00000gn/T/ 
Apple_PubSub_Socket_Render=/tmp/launch-91y0bp/Render
OLDPWD=/Users/zmjones
USER=zmjones
COMMAND_MODE=unix2003
SSH_AUTH_SOCK=/tmp/launch-H3JJsl/Listeners
__CF_USER_TEXT_ENCODING=0x1F5:0:0
Apple_Ubiquity_Message=/tmp/launch-n2bT2X/Apple_Ubiquity_Message
PATH=/users/zmjones/.ec2/bin:/Library/Frameworks/EPD64.framework/Versions/Current/bin:/usr/local/texlive/2011/bin/x86_64-darwin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/x11/bin:/usr/texbn
PWD=/Users/zmjones/.ec2
 JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home/
LANG=en_US.UTF-8
ITERM_PROFILE=Default
SHLVL=1
HOME=/Users/zmjones
ITERM_SESSION_ID=w0t0p0
LOGNAME=zmjones
EC2_PRIVATE_KEY=pk-mykey.pem
DISPLAY=/tmp/launch-6kkP5t/org.x:0
EC2_CERT=cert-mycert.pem
 _=/usr/bin/env

Частичное решение:tr -d '\r' < /users/zmjones/.ec2/bin/ec2-add-keypair > /users/zmjones/.ec2/bin/ec2-add-keypair

Кажется, что это позволяет командам выполняться, но теперь они не работают. Например, я скачал новую копию инструментов ec2 api, поместил их в~/.ec2 пыталсяec2-describe-images -o amazon и получил ошибку плохого интерпретатора. Я переименовалec2-describe-images вec2-describe-images.bak побежалtr Команда указана выше и попробовал еще раз. Я тогда получаюpermission denied error, Когда я запускаю его с помощью sudo, он говорит мне, чтоEC2_HOME не установлен, ноecho $EC2_HOME указывает, что это так. Я побежалchmod +x ec2-describe-images и теперь я возвращаюсь к той же самой плохой ошибке.

Показать выводls -l /usr/bin/env Greg Hewgill
@Johnsyweb: Хороший звонок, держу пари, ты абсолютно прав. Greg Hewgill
-r-xr-xr-x 1 корневое колесо 34720 8 сентября 2011 г. / usr / bin / env Zach
Ну, это не выглядит необычно. Далее попробуйте запустить/usr/bin/envЕсли он успешен, он должен напечатать вашу текущую среду. Greg Hewgill
держу пари/users/zmjones/.ec2/bin/ec2-add-keypair имеет DOS-окончания. Увидетьstackoverflow.com/a/8556539/78845 для решения. Johnsyweb

Ваш Ответ

3   ответа
2

/users/zmjones/.ec2/bin/ec2-add-keypair имеет DOSлиния окончаний.

Чинить:

mv /users/zmjones/.ec2/bin/ec2-add-keypair /users/zmjones/.ec2/bin/ec2-add-keypair.bak
tr -d '\r' < /users/zmjones/.ec2/bin/ec2-add-keypair.bak > /users/zmjones/.ec2/bin/ec2-add-keypair
ах, точка взята Zach
Оказывается, это не работает. Я могу заставить команду выполнить, но она фактически не делает то, что должна. Не уверен, что случилось. Zach
2

потому что у меня был неправильный заголовок в моих файлах bash. я имел #!/usr/bin/bash вместо#!/usr/bin/env bash которая является портативной версией.

1

ПРИЧИНОЙ проблемы является"unarchiver tool".

Я установил сторонний инструмент для разархивирования. Это может изменить окончание строк файлов во время процесса разархивирования.

После того, как я понял это, я удалил этот инструмент и заново разархивировал почтовый шарик EC2, используя собственный инструмент для разархивирования. И проблема была решена.

Надеюсь, что это может быть полезно для вас, ребята с той же проблемой.

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