Bash "EOF에 추가하려고 할 때"권한이 거부되었습니다 "문제


4

몇 줄을 파일 끝으로 밀어 넣으려고하면 권한 문제가 발생합니다. 나는 왜 내가 오류를 얻고 있는지 이해하지만, 그것을 해결할 방법을 생각할 수 없다. 어떤 도움을 주시면 감사하겠습니다.

sudo cat > /etc/php5/apache2/php.ini << EOF
    # extensions
    extension=”memcached.so”
    extension=”apc.so”
EOF

ls -al /etc/php5/apache2/php.ini, 파일의 권한 설정은 무엇입니까?
Jin

답변:


10

Heredoc 사용 또는 "EOF에 추가"는 다음과 같습니다. 아니 문제.

모든 리디렉션 ( > ) 적용된 전에 실제 명령을 실행합니다. 즉, 쉘이 먼저 열려고 시도합니다. /etc/php5/apache2/php.ini 편지 쓰기 귀하의 계정을 사용하여 , 그런 다음 완전히 쓸모 없어집니다. sudo cat.

이 문제를 해결할 수있는 한 가지 방법은 다음과 같습니다.

sudo bash -c "cat >> /etc/php5/apache2/php.ini" <<EOF

(당신은을 통해 대화 형 셸을 실행할 수 있습니다 sudo -s, 또는 사용 dd 또는 tee 파일에 쓰기위한 것입니다.)


관련 메모에서 > 의지 덮어 쓰기 오래된 php.ini. 용도 >> 추가 할 수 있습니다.


고마워요. 위의 숨겨진 파일을 실행하는 데 문제가 있습니다. 나는 이런 종류의 반응을 얻는다. cl.ly/3K2J3Q2N1h2I3N364301
onassar

@onassar : 당신이 heredoc을 " EOF ", 정확히 같은" EOF ". 아니 " .EOF "당신이 현재하고있는 것처럼.
grawity

이 코드는 내가 붙여 넣는 코드입니다. cl.ly/1w3s1p2J3U1I3C1j0q1O 그것은 실제로 터미널에서 부적절하게 렌더링되고 있습니다.
onassar

그것은 내 코드의 탭 (\ t 문자)을 벗어 던지고있는 것 같습니다. 그것들을 4 칸으로 대체하는 것이 트릭을 만들었습니다. 고마워!
onassar

0

sudo su 그리고 나서 적당한 쉘을 가지고 있습니다. root. 이 명령을 실행하지 않고 sudo 접두사. 나중에, exit 루트 셸에서 돌아갑니다.


0

@grawity의 답변을 확대하여 tee 사용법을 보여줍니다.

sudo tee /etc/php5/apache2/php.ini >/dev/null <<EOF
    # extensions
    extension=”memcached.so”
    extension=”apc.so”
EOF

덮어 쓰는 대신에 추가를 위해 티의 "-a"옵션을 사용하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.