"script" 명령을 사용하여 세션을 기록할 때 원래 위치로 cd

"script" 명령을 사용하여 세션을 기록할 때 원래 위치로 cd

script log.txt내 bash 구성 파일에 이 내용이 있습니다. 그러면 새 하위 프로세스가 생성되고 전체 세션이 log.txt에 기록됩니다. cmd+를 눌러 t새 터미널을 열면 일반적으로 명령이 호출된 디렉터리에서 터미널이 열리지만 새 스크립트 하위 프로세스는 항상 홈 디렉터리로 돌아갑니다.

현재 디렉토리를 이 스크립트 명령에 "전달"하는 방법이 있습니까?

답변1

/procMacOS의 터미널에는 하나의 탭에서 실행 중인 프로세스에서 현재 작업 디렉터리를 가져와( 또는 이와 유사한) 새 탭의 초기 현재 작업 디렉터리로 사용하는 기능이 있는 것 같습니다 .

이 경우 첫 번째 탭에서 실행되는 프로세스는 script현재 작업 디렉터리를 변경하는 데 전혀 신경 쓰지 않으므로 새 탭이 항상 해당 디렉터리에 나타납니다. 실제로 (일부) 하위 프로세스의 현재 작업 디렉터리만 script변경되지만 터미널 애플리케이션은 이를 인식하지 못합니다.

이것이 맞다면 터미널 애플리케이션의 작동 방식을 변경하거나 작동 방식을 변경하는 것 외에는 해결 방법이 없습니다 script.

답변2

현재 디렉터리는 간단합니다.

CWD="$(pwd)" ; 
echo "PWD === ${CWD}" ;

또는 온라인으로 전달할 수도 있습니다. 예를 들면 다음과 같습니다.

CWD="something" ./script log.txt

스크립트의 내용은 다음과 같습니다.

cat script
#!/bin/bash
if [ $CWD ] ; then echo "CWD Preset & == ${CWD}" ; else echo "CWD NOT SET... SETTING to: $(pwd)" ; CWD=$(pwd) ; fi ;

export분명히 위의 변수를 사용할 수도 있으며 CWD, 이 경우 다른 서브쉘/프로세스가 이에 액세스할 수 있어야 합니다.

export CWD="$(pwd)" ;  # or the path of interest
# ... then post New Terminal / Session:
echo "CWD == ${CWD}" ; 

관련 정보