Var expanderas ~/

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Var expanderas ~/

Inlägg 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å)
Användarvisningsbild
Substrata
Inlägg: 71
Blev medlem: 13 apr 2010, 11:01
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: Var expanderas ~/

Inlägg 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.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: Var expanderas ~/

Inlägg 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
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
Substrata
Inlägg: 71
Blev medlem: 13 apr 2010, 11:01
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: Var expanderas ~/

Inlägg 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.
Skriv svar

Återgå till "Terminalforum"