Sida 1 av 1

Var expanderas ~/

Postat: 02 maj 2010, 10:07
av TicToc
Jag sitter och programmerar Java och upptäckte just att ~/ fungerar fint i JFileChooser, dvs det expanderas till aktuell användarkatalog.
När jag använder det direkt i tex

Kod: Markera allt

File file = new File("~/");
får jag
FileNotFoundException:

Det fick mig att bli nyfiken. Var och på vilken nivå expanderas ~/? (utanför jvm alltså)

Re: Var expanderas ~/

Postat: 02 maj 2010, 10:28
av Substrata
Av shellet eller någon annan API ovanpå systemfunktionerna, om det görs alls. Det görs inte av "system-api:n", alltså open(2) etc.

Re: Var expanderas ~/

Postat: 02 maj 2010, 11:27
av dmz
Däremot kan du använda $HOME som exporterats, i Perl kan man t.ex göra;

Kod: Markera allt

> perl -e 'print $ENV{HOME},"\n"'
/home/foobar

Re: Var expanderas ~/

Postat: 02 maj 2010, 13:53
av Substrata
Kan dock noteras att tildeexpandering inte enbart är mot den egna hemkatalogen utan även andras ("~user"), samt att man inte alltid vill göra sig beroende av environmentvariabler utifrån säkerhetsskäl. Så jag funderar på vad som kan vara den rekommenderade lösningen om man vill baka en egen expandering. Skulle gissa på getuid(2) samt/eller getpwent(3) för lokalisering av användarnamn och hemkatalog.