Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

cd: ~/info: No such file or directory

Sitter och försöker få ihop ett lite script.
men får detta: install-H-S.sh: line 58: cd: ~/info: No such file or directory
...

#vart den ska installeras under ~/???
inst="~/info"

test_start() {
cd $inst
}

case "$1" in
'test')
  test_start
  ;;

*)
  echo "usage $0 test"
När jag kör det får jag detta.

 bash  install-H-S.sh test
install-H-S.sh: line 58: cd: ~/info: No such file or directory

+ test_start
+ cd '~/info'
install-H-S.sh: line 58: cd: ~/info: No such file or directory

men när jag skriver som samma användare i consolen cd ~/info
så funkar de som det är tänkt vad har jag gjort för fel?

 

 

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

Jag har som regel att använda $HOME istället för ~ i skript.

Stämmer rättigheterna?

Kör du skriptet som samma användare som du sedan testade manuellt med?

FoHs bild

Kan det vara så att ~ bara är något som fungerar i en BASH-terminal? Om jag exempelvis skriver inst=~/info i terminalen och sedan echo $inst så har den ersatt ~ med hemkatalogen. Den expanderar helt enkelt ~ i terminalen. Det kanske den inte gör i scriptet?

Att använda $HOME är förmodligen det bästa.

Problemet brukar ligga i " " som gör att det inte bearbetas av bash.

inst=~/info borde fungera men inte inst="~/info" för då får den bara värdet ~/info och inte $HOME/info

Precis som fnuttarna när du använder sed så gör dom att skalet inte bearbetar inskrivet värde (om du testar vissa saker med och utan fnuttar så ser du att resultaten kan skilja)

Jag hade personligen använt INST=${INST:-$HOME/info} så skriptet kan köras med en variabel för installations dir.

Jag anser att variabler alltid ska vara endast versaler i bash skript. (personlig åsikt)

Löste det sig?