sed를 사용하여 bash 파일의 주석 줄을 바꾸지 못했습니다.

sed를 사용하여 bash 파일의 주석 줄을 바꾸지 못했습니다.

hadoop-env.sh주석이 달린 매개변수가 새 매개변수로 대체되도록 파일을 업데이트하려고 합니다 . 나는 전체 개념을 처음 접했고 많은 검색 끝에 다음을 수행하게 되었습니다.

sed -i '/^export JAVA_HOME=/ s:.*:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nexport HADOOP_HOME=/usr/local/hadoop\n:' $HADOOP_HOME/etc/hadoop/hadoop-env.sh

업데이트하려는 파일 부분은 다음과 같습니다.

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
# export JAVA_HOME=

원하는 결과는 다음과 같습니다.

# The java implementation to use. By default, this environment
# variable is REQUIRED on ALL platforms except OS X!
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop

하지만 hadoop-env.sh파일을 캡처하면 이전과 동일한 내용이 나옵니다. Dockerfile다음 명령을 사용하여 실행 중임을 언급해야 합니다 .

RUN sed -i '/^export JAVA_HOME=/ s:.*:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nexport HADOOP_HOME=/usr/local/hadoop\n:' $HADOOP_HOME/etc/hadoop/hadoop-env.sh

내가 무엇을 놓치고 있을지 모르겠습니다. 도움을 주시면 대단히 감사하겠습니다.

답변1

댓글에 이에 대한 답변이 있었습니다.

변화:

sed -i '/^export JAVA_HOME=/ s:.*:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nexport HADOOP_HOME=/usr/local/hadoop\n:' $HADOOP_HOME/etc/hadoop/hadoop-env.sh

받는 사람: (2자만 추가하세요)

sed -i '/^# export JAVA_HOME=/ s:.*:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64\nexport HADOOP_HOME=/usr/local/hadoop\n:' $HADOOP_HOME/etc/hadoop/hadoop-env.sh

관련 정보