Como posso dizer ao meu programa para salvar em ~

2

Estou usando um programa que processa alguns dados e os salva em um arquivo. É possível especificar o diretório no qual os dados são salvos, mas o programa está mal escrito, então se eu colocar ~ ele não conseguir interpretar o resultado e dizer que nenhum diretório chamado /~ foi encontrado.

Eu quero poder dar este programa aos meus colegas e mandar executá-lo. Eu poderia especificar diretamente para salvar em /home/my_username/ , mas eles também teriam "nenhum diretório encontrado" quando tentassem executá-lo, porque suas pastas base têm nomes diferentes.

Posso especificar ~ de alguma outra forma que meus colegas possam executar o programa e salvá-los em seus próprios diretórios pessoais?

    
por user2445507 08.03.2016 / 19:43

4 respostas

3

Observe que ~ é expandido pelo shell para o valor de ${HOME} , não é possível inserir isso como entrada para um programa e esperar que ele seja traduzido automaticamente para ${HOME} (a menos que você o especifique como um opção de linha de comando para o programa, o que dá ao shell uma chance de realizar a substituição).

Se você quiser gravar no diretório inicial, poderá fazer com que seu programa procure a variável de ambiente ${HOME} . Então, quem quer que seja, e onde quer que esteja em casa, você terá a resposta certa.

    
por 08.03.2016 / 20:20
2

Eu estaria inclinado a sugerir a tentativa de . (sim, apenas um ponto). Isso significa diretório atual .

Portanto, se o programa estiver sendo executado a partir do diretório pessoal de um usuário, é aí que ele salvará seus dados.

    
por 09.03.2016 / 00:38
0

Eu recomendaria usar /tmp . É mundialmente gravável (ou, pelo menos, se não for mundialmente escrito, você tem problemas muito maiores do que o diretório a ser usado!).

    
por 08.03.2016 / 19:47
0

Se $ {HOME} não funcionar como sugerido por Andy, você poderia tentar / proc / self / cwd /.

Ou, no entanto, você está configurando esse caminho, basta configurar um diferente para cada usuário para o qual você o distribui.

Ou não execute o programa diretamente, mas execute-o em um script. O script pode definir o caminho no entanto você está fazendo isso agora, ou pode cd para o diretório de dados, em seguida, executar o programa por caminho e você pode configurar "." como o diretório de dados.

    
por 08.03.2016 / 22:49