내보낸 날짜 변수가 서브셸에 표시되지 않습니다.

내보낸 날짜 변수가 서브셸에 표시되지 않습니다.

현재 2개의 서로 다른 스크립트를 사용하여 2개의 bash 파일을 만들고 있는데, 이 파일은 나중에 비교/처리하기 위해 동일한 타임스탬프를 가진 두 개의 파일을 생성합니다. 날짜 변수는 첫 번째 sh에서 생성되고 동일한 타임스탬프를 사용할 수 있도록 두 번째 sh에 전달할 환경을 만들려고 합니다. 나는 그것을 사용하고 있다정지시키다두 번째 스크립트는 반복 프로세스이기 때문에 종료될 때까지 파일에 계속 데이터를 입력합니다.

1.sh

current_date_time="`date +%Y-%m-%d-%H:%M:%S`"
code 
OUTPUT=$current_date_time --ouput-format csv
(export current_date_time; sudo timeout 15 2.sh)

2.sh

echo "The variable is $current_date_time"
call loop
  code
  OUTPUT=$current_date_time.txt
loop

첫 번째 스크립트는 정상적으로 실행되지만 두 번째 스크립트는 문구만 생성 The variable is하고 출력 파일이 생성되지 않습니다. 시간이 초과된 것 같지만 어떤 아이디어라도 주시면 감사하겠습니다.

답변1

에 명시된 바와 같이 man sudoers:

   Command environment
     Since environment variables can influence program behavior, sudoers pro‐
     vides a means to restrict which variables from the user's environment are
     inherited by the command to be run.  There are two distinct ways sudoers
     can deal with environment variables.

     By default, the env_reset option is enabled.  This causes commands to be
     executed with a new, minimal environment.

sudo-E또는 옵션을 사용하여 호출하여 호출 환경이 유지되도록 요청할 수 있습니다 --preserve-env.

sudo -E timeout 15 2.sh

(Sudoers 정책에서 금지하는 경우 성공하지 못할 수도 있습니다.)

관련 정보