cd para o local original ao gravar a sessão com o comando “script”

1

Eu tenho script log.txt no meu perfil bash; que cria um novo subprocesso e grava toda a minha sessão no log.txt. Quando eu pressionar cmd + t para abrir um novo terminal, normalmente isto irá abrir um no mesmo diretório que o comando foi chamado; no entanto, o novo subprocesso de script sempre é revertido para o diretório inicial.

Existe alguma maneira de "passar" o diretório atual para esse comando de script de alguma forma?

    
por Luiz 26.04.2016 / 22:04

2 respostas

1

Parece que o Terminal do MacOS tem um recurso onde ele extrai o diretório de trabalho atual do processo que está sendo executado em uma guia (usando /proc ou similar) e o utiliza como o diretório de trabalho atual inicial para uma nova guia.

Nesse caso, o processo em execução na primeira guia é script - que nunca se incomoda em alterar seu diretório de trabalho atual, portanto, novas guias sempre aparecem com esse diretório. Somente o diretório de trabalho atual do (alguns) processo filho de script está realmente mudando, mas o aplicativo Terminal não está prestando atenção a isso.

Se isso estiver correto, não há uma solução alternativa para alterar a forma como o aplicativo Terminal funciona ou a alteração de como o script funciona.

    
por 26.04.2016 / 23:02
0

O diretório atual é simplesmente:

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

Alternativamente, você também pode passar in-line, por exemplo:

CWD="something" ./script log.txt

O conteúdo do script que contém:

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

Você pode, obviamente, export da variável CWD acima mencionada e, nesse caso, deve estar acessível a qualquer outra sub-shell / processo.

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