Filepath: use o mesmo caminho de arquivo em unix e winodws

1

Estou trabalhando em aplicativos que funcionam em ambientes unix e windows.
Eu mapeei minha unidade unix no windows usando o samba.

No cygwin:

 ls -l /remote
 /remote -> //samba1

quando tento seguir o comando:

myExecutable /remote/fileloc/filename.txt 

Está funcionando bem no Unix, mas falhando no Windows durante a abertura de arquivos.
Se eu der o seguinte comando no windows:

myExecutable //samba1/fileloc/filename.txt

Funciona bem.

Existe alguma maneira que eu possa acessar com o mesmo caminho ( /remote/fileloc/filename.txt ) no unix e no windows?

Eu posso mudar apenas no Windows. Caminho da unidade Unix eu não posso mudar.

    
por Abhishek 04.12.2013 / 10:36

1 resposta

1

A solução mais simples é usar caminhos relativos. Por exemplo,

myExecutable ../fileloc/filename.txt

significa o mesmo em ambos os sistemas. É claro que essa sintaxe exige que o diretório atual do script de chamada (o script que contém a linha acima) esteja na mesma letra da unidade do Windows que o nome do arquivo. Se não, eu apenas adotaria a solução 2:

Uma solução mais geral seria adicionar um pouco de código condicional ao seu script, que verifica em qual host ou sistema você está e define uma variável de acordo. Algo parecido com isto:

if [ 'hostname' == mylinuxbox ]
then
    BASEDIR=/remote
else
    BASEDIR=//samba
fi

myExecutable "$BASEDIR"/fileloc/filename.txt
    
por 04.12.2013 / 11:23