Fazer link abrir arquivo de destino, não arquivo no local do link

2

Desculpe pelas tags. Eu não sei quem se aplica. Por favor, remova os que não pertencem e exclua esta linha. Ou comentar, e eu vou fazer isso sozinho.

Plano de fundo

Eu quero colocar um link para um arquivo localizado em /home/myname/some/path/file.tex na minha área de trabalho. Este arquivo TeX chama outros arquivos TeX dentro dele. Agora, quando eu abro o link, que está localizado na área de trabalho, meu editor TeX, ele diz que eu abri o arquivo /home/myname/Desktop/file.tex . Eu não posso compilar este arquivo, porque os outros arquivos TeX dos quais o arquivo TeX principal depende não estão localizados onde o programa os espera.

Pergunta principal

Como posso fazer um arquivo de link abrir o arquivo de destino em sua localização real em vez de na área de trabalho?

EDITAR

A solução anunciada aqui não funciona como esperado. Com

#!/bin/bash
exec /home/myname/some/path/file.tex "$@"

Eu obtenho

/tmp/geany_run_script_JVX1HZ.sh: 7: /tmp/geany_run_script_JVX1HZ.sh: ./open-file.sh: Permission denied


—----------------
(program exited with code: 126)
Press return to continue

Em que open-file.sh é o script de wrapper localizado em minha área de trabalho.

EDIT 2

Embora, se eu abrir um terminal e fizer

chmod a+x ./open-file.sh

e altere exec para texstudio , que, aliás, é o programa que eu uso para abrir .tex arquivos, então eu posso abrir um terminal e fazer

bash open-file.sh

ele iniciará o TeXStudio com o arquivo desejado carregado no local de destino desejado. Eu ainda não posso apenas dar um duplo clique em open-file.sh na minha área de trabalho, pois isso abrirá meu editor de texto, permitindo que eu edite o script bash. Quero clicar duas vezes no arquivo de script open-file.sh e fazer o TeXStudio abrir meu arquivo file.tex .

### EDIT 3

De esta questão , deduzi que fiz tudo certo e o arquivo deve ser clicável e ser executado após clicar. Infelizmente, isso não acontece. Eu acho que minhas permissões estão corretas, afaik

e mesmo aqui

-rwxr-xr-x me me 94 Apr 27 12:00 open-file
    
por thymaro 26.04.2018 / 18:30

1 resposta

0

Eu não sei como fazer um link funcionar assim, mas há uma maneira relativamente fácil de fazê-lo.

O problema parece ser que o programa invocado para processar seus dados não está sendo executado com seu diretório de trabalho configurado para o local do seu arquivo de dados.

Em vez de vincular o arquivo em si, escreva um script de inicialização e passe o local do arquivo para ele como um parâmetro. Em seguida, vincule o script à sua entrada na área de trabalho.

Pelo menos no KDE, é mais fácil fazer isso adicionando uma entrada ao seu Disparador de Aplicativos com todos os parâmetros configurados da maneira desejada e arrastando a entrada do menu para a área de trabalho. Ele tem um monte de variáveis de espaço reservado que permitem modificar o comando e até mesmo permite especificar o diretório de trabalho a ser usado.

Isso pode ser simples ou extravagante. Comece com simples:

#!/bin/bash
## Usage: launcheroo working-directory data-file
## defending this script is left as an exercise for the reader
## ... or you can ask in the comments ;)
cd "$1"
myprog "$2" ## or your more fancy exec that will figure out
            ## what program to run by itself

invocado como:

launcheroo path-to-data-files data-file

Isso lida com o uso mais básico e ilustra a abordagem, mas não lida com erros como parâmetros incorretos ou ausentes

Para ficar um pouco mais extravagante, você pode extrair o caminho do caminho do arquivo de dados especificado usando dirname ou edição do parâmetro bash em vez de passá-lo como um parâmetro separado.

Um jeito rápido e sujo de fazer isso - especialmente para testar como ele funciona - seria apenas editar o ícone da área de trabalho para executar

cd where-the-files-are ; exec ...

Como este é o Linux, provavelmente existem muitas outras maneiras de fazer isso também.

Se você adicionar o arquivo como um ícone na área de trabalho, poderá editar diretamente seu arquivo .desktop e fazê-lo fazer todo tipo de coisas interessantes. Eu não fiz muito com isso.

Acabamos de ver isso answer que é essencialmente o mesmo que o meu com um giro ligeiramente diferente.

    
por Joe 03.05.2018 / 10:18