Como chdir para symlink source e não target in .screenrc

0

Existe uma maneira de informar screen para não referenciar links simbólicos quando um é passado para o comando chdir ?

No meu .screenrc tenho comandos como este:

chdir /data/project1
screen -t "project1"
chdir /data/project2
screen -t "project2"

A ideia é que quando eu lanço o screen , eu recebo alguns terminais pré-carregados em vários diretórios comuns que eu uso com frequência.

Infelizmente tudo em /data é um link simbólico no meu sistema, então quando eu carrego screen com os comandos acima, os terminais são deixados em diretórios diferentes, como /mnt/remote/server1/long/path/to/project1 ao invés de /data/project1 . Eu tenho que digitar cd /data/project1 no terminal para entrar na pasta que eu quero.

Como os caminhos que estou usando são muito longos e podem mudar, eu prefiro adquirir o hábito de usar meus atalhos /data para que eu não precise alterar nenhum hábito se eu realocar os arquivos em outro lugar.

Existe alguma maneira de dizer ao screen que, ao usar chdir e o alvo é um link simbólico, não desreferenciar o link simbólico e apenas mudar para esse diretório de qualquer maneira?

    
por Malvineous 07.10.2017 / 08:12

1 resposta

2

Acho que você entendeu mal o que acontece lá.

Quando você está em

/mnt/remote/server1/long/path/to/project1

com o seu shell e digite

cd /data/project1

então você não muda o diretório. Você acabou de mudar o que o shell está mostrando. O shell informa as hierarquias de diretórios lógicas e físicas. screen (e mais ou menos todo o resto) não.

A solução mais fácil é provavelmente adicionar algum código a .bashrc (supondo que você use bash ):

test "$PWD" = '/mnt/remote/server1/long/path/to/project1' && cd /data/project1
    
por 07.10.2017 / 10:14