Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

bash script alias

Som jag har förståt det så går det inte att lägga till alias i ett skript utan det måste köras i command line.
Hur gör jag för att automatiskt skapa ett alias i skript ?
Jag vill helt enkelt köra ett skript som gör alias av några filer?

Jag har testat med att lägga ett script i /usr/local/bin
men problemet där är att det krävs permission . Vilket skapar problem när man köra första skriptet för att det i skript två skapas 1 körbar fil.

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Nov 2011
Skrivet av Lady:

Som jag har förståt det så går det inte att lägga till alias i ett skript utan det måste köras i command line.
Hur gör jag för att automatiskt skapa ett alias i skript ?
Jag vill helt enkelt köra ett skript som gör alias av några filer?

Jag har testat med att lägga ett script i /usr/local/bin
men problemet där är att det krävs permission . Vilket skapar problem när man köra första skriptet för att det i skript två skapas 1 körbar fil.

Gör alias av filer? Hur menar du där?

Linux: the operating system with a CLUE; Command Line User Environment.

GNU/Linux

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

Alias går ej att skapa genom ett skript för där sätter skript funktionen stop för.
Det andra sättet är att lägga den i /usr/local/bin vilket kräver ändå att man ger rättigheten att lägga filen där.

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Registrerad
Jul 2005
Skrivet av Lady:

Alias går ej att skapa genom ett skript för där sätter skript funktionen stop för.
Det andra sättet är att lägga den i /usr/local/bin vilket kräver ändå att man ger rättigheten att lägga filen där.

Jag tror att du måste vara mer utförlig med vad du vill göra. Var snäll att skriv extremt tydligt vad du vill göra och ett exempel på det.

Jag har aldrig hört att man kan göra alias av filer? och varför skulle man vilja göra det?

alias använder jag till att göra komplicerade kommandon kortare, som tex:

alias lsmore='ls --color -lah |more'

Det går alldeles utmärkt att lägga in i ett script om du vill:

#!/bin/bash alias lsmore='ls --color -lah |more'

samt gör det körbart: chmod 755 myScript.sh
--------------------
men det vanligaste sättet är att lägga in det i .bashrc:

Här läggs alias in globalt för alla användare:

echo "alias lsmore='ls --color -lah |more'" | sudo tee -a /etc/bash.bashrc eller sudo -s echo "alias lsmore='ls --color -lah |more'" >> /etc/bash.bashrc

eller så kan du lägga in alias i din egen hemkatalog som endast din hem-användare använder:

echo "alias lsmore='ls --color -lah |more'" ~/.bashrc

~/ betyder: /home/minAnvändare
~/.bashrc betyder /home/minAnvändare/.bashrc

och .bashrc i din egen hemkatalog körs varje gång du öppnar en terminal, så då kommer alias alltid att köras, eller annat du lägger där.
----------------------------

du kan skapa ett skript i /etc/local/bin/myScript.sh (bli root först):

echo "#!/bin/bash" | sudo tee -a /etc/local/bin/myScript.sh echo "touch /etc/local/bin/myNewFile.txt" | sudo tee -a /etc/local/bin/myScript.sh sudo chmod 755 /etc/local/bin/myScript.sh

nu kan alla köra scriptet, problemet är nu att när skriptet körs utan root-privilegier så kan filen /etc/local/bin/myNewFile.txt inte skapas

Det kan du lösa med att sätta på "SUID", även kallad "sticky-bit" på skriptet:

sudo chmod u+s /local/bin/myScript.sh

Detta gör att skriptet kan köras med dom rättigheterna som root har, utan att behöva ange lösenordet för root eller behöva logga in som root eller köra sudo. Dvs en helt vanlig användare kan nu köra skriptet /etc/local/bin/myScript.sh
och filen /etc/local/bin/myNewFile.txt kommer att skapas.

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

tack för hjälpen, tror jag vet vad som saknades.
Angående alias så ville jag att programmet skulle köras bara jag skrev ett namn oavsett i vilken katalog jag stod i samt slipper skriva adressen till filen /home/filer/filer/minfil.sh

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Registrerad
Jul 2005
Skrivet av Lady:

tack för hjälpen, tror jag vet vad som saknades.
Angående alias så ville jag att programmet skulle köras bara jag skrev ett namn oavsett i vilken katalog jag stod i samt slipper skriva adressen till filen /home/filer/filer/minfil.sh

Ok, det du menar är vilka PATHS som gäller, typ som c:\windows;c:\windows\system32

alias är någonting helt annat.

För att skapa filer i /etc/local/bin måste du vara sudo/root.

sudo -s (bli root permanent) nano /etc/local/bin/myScript.sh exit #när du är klar

nano är ett editeringsprogram för att skriva text i.

Trädvy Permalänk
Medlem
Registrerad
Jul 2005

Att vara och pilla i /etc/local/bin kanske inte är det bästa och kräver dessutom root-acess.
Ett alternativ är att göra en personlig $HOME/bin och lägga till den i path när du loggar in med den användaren.

Skapa mappen bin i hemkatalogen "mkdir $HOME/bin"

Lägg till koden nedan längst ner i din .profile i din hemkatalog med t.ex. "nano $HOME/.profile"

if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi

Se till att filerna i $HOME/bin är körbar med "chmod ug+x <filnamn>"

Nästa gång du loggar in kommer filerna i $HOME/bin kunna köras varifrån som helst.

There are 10 types of people in the world: Those who understand binary, and those who don't...

Asus Maximus VIII Hero | i7-6700K | ASUS GeForce GTX1070 Strix 8GB | G.Skill F4-2133C15Q-32GRK |

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

Tack WarWolf, ska testa denna.

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)