Script åtkomligt överallt. Hur?

Permalänk

Script åtkomligt överallt. Hur?

En basic-fråga.
Om jag vill skapa ett script (FIND.sh), låt oss säga sudo Find / -name $1 och det ska vara åtkomligt från alla ställen och även efter återstart av systemet. Hur ska jag gå till väga? Var ska det sparas? Vilka Mijöväxlar ska skrivas?
Lite pinsam fråga men har inte gått grundkursen utan kastat mig in i allt annat pga tidsbrist.

Permalänk
Medlem

Generellt sett bör inte skript ha 'sudo' i sig. Behöver de köras med eleverade rättigheter bör detta ske av användaren själv. Men, för att besvara din fråga:

Vad som är exekverbart oavsett varifrån i trädstrukturen du står avgörs av din $PATH. Du kan antingen ändra din path (läs man pages för config av det shell du använder) eller genom att lägga scriptet i din $PATH.

Mer detaljerat än så tänker jag inte svara, för en enkel howto kan du googla fram och inte lära dig något av på egen hand.

Visa signatur

Desktop: AMD 3950X, 64 GB RAM, Nvidia 4070 ... (Windows 11)
Serverdesktop: AMD 5600G, 64 GB RAM (Proxmox)
Labbmiljö: Supermicro SC825 X9DRi-F 2xE5-2667v2 64GB RAM
Kamera: Canon R5, Canon RF 100-500, Laowa 100mm f/2.8, Canon RF 24-70 f/2,8

Permalänk
Medlem

De flesta distributioner har /usr/local/bin för just det ändamålet, d.v.s. för lokala script och program som inte hanteras av pakethanteraren.

Permalänk

~/bin/ brukar ligga i din PATH om den existerar iaf på Ubuntu.
Så skapa /home/<användarnamn>/bin/ och lägg dina skript och binärer där.
Så här skall det se ut i ~/.profile ifall det saknas på ditt OS:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

Permalänk
Skrivet av FattarNiInte:

~/bin/ brukar ligga i din PATH om den existerar iaf på Ubuntu.
Så skapa /home/<användarnamn>/bin/ och lägg dina skript och binärer där.
Så här skall det se ut i ~/.profile ifall det saknas på ditt OS:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

Aha! Det är i .profile det lagras?
Utmärkt. Då förstår jag gången!
~/bin finns. Den skapade jag pga nedladdat program.
Jag kan fixa en script-folder där...

Tack!

Permalänk
Medlem
Skrivet av Sweedland:

Aha! Det är i .profile det lagras?
Utmärkt. Då förstår jag gången!
~/bin finns. Den skapade jag pga nedladdat program.
Jag kan fixa en script-folder där...

Tack!

~/.profile är ett ställe du kan ange en path. Din .profile laddas när du loggar in, och den är personlig för ditt konto. Gör du ändringar i den måste du antingen ladda om den manuellt eller logga om. Ska du göra ändringen för samtliga användare finns bättre filer att välja, och dessa har dessutom user-specific-motsvarigheter som kan användas.
Sedan kan man förstås diskutera huruvida ett såpass generellt script bör ligga i en användares hemmamapp alls, och huruvida det skulle vara minst lika smidigt att lägga in det som ett alias, men nu känner jag själv att jag börjar bli gnällig.

Visa signatur

Desktop: AMD 3950X, 64 GB RAM, Nvidia 4070 ... (Windows 11)
Serverdesktop: AMD 5600G, 64 GB RAM (Proxmox)
Labbmiljö: Supermicro SC825 X9DRi-F 2xE5-2667v2 64GB RAM
Kamera: Canon R5, Canon RF 100-500, Laowa 100mm f/2.8, Canon RF 24-70 f/2,8

Permalänk

Alla resor börjar med ett steg. Du har kommit långt... I och med din kommentar kommer ju automatisk fråga: Var lägga för allmänheten och som är åtkomligt efter att datorn är startad? Inte bara för en användare efter inlogg.

Permalänk
Medlem
Skrivet av Sweedland:

Alla resor börjar med ett steg. Du har kommit långt... I och med din kommentar kommer ju automatisk fråga: Var lägga för allmänheten och som är åtkomligt efter att datorn är startad? Inte bara för en användare efter inlogg.

Ja, alla resor börjar med ett steg och jag har kommit tillräckligt långt för att tjäna ihop till brödfödan på det. Det mesta har jag lärt mig genom att googla och läsa man-pages. Just därför ger jag den typ av svar jag ger ... Det finns två bra sätt att lära sig Linux:
Antingen ger man sig i kast med någon lämplig kurs (må det vara högskolekurs, onlinekurs eller bok) eller så labbar man sig fram. Båda kräver att man läser: i det första fallet har man hjälp av studielitteratur, i det andra av lämplig sökmotor. I båda fallen är man-pages din bästa vän. Lär dig läsa man-pages så har antalet trådar du behöver skapa minskats med 95%.

I det här fallet skulle jag rekommendera bash(1) och undertiteln "Files" som ett första uppslag att leta efter din PATH i då du sannolikt har bash som shell och kanske vill veta vilka filer bash använder sig utav.

Visa signatur

Desktop: AMD 3950X, 64 GB RAM, Nvidia 4070 ... (Windows 11)
Serverdesktop: AMD 5600G, 64 GB RAM (Proxmox)
Labbmiljö: Supermicro SC825 X9DRi-F 2xE5-2667v2 64GB RAM
Kamera: Canon R5, Canon RF 100-500, Laowa 100mm f/2.8, Canon RF 24-70 f/2,8

Permalänk
Skrivet av Crazy Ferret:

Ja, alla resor börjar med ett steg och jag har kommit tillräckligt långt för att tjäna ihop till brödfödan på det. Det mesta har jag lärt mig genom att googla och läsa man-pages. Just därför ger jag den typ av svar jag ger ... Det finns två bra sätt att lära sig Linux:
Antingen ger man sig i kast med någon lämplig kurs (må det vara högskolekurs, onlinekurs eller bok) eller så labbar man sig fram. Båda kräver att man läser: i det första fallet har man hjälp av studielitteratur, i det andra av lämplig sökmotor. I båda fallen är man-pages din bästa vän. Lär dig läsa man-pages så har antalet trådar du behöver skapa minskats med 95%.

I det här fallet skulle jag rekommendera bash(1) och undertiteln "Files" som ett första uppslag att leta efter din PATH i då du sannolikt har bash som shell och kanske vill veta vilka filer bash använder sig utav.

Ok. Ja. Jag lever också på programmering och elektronik. Är konsult. För min del har jag kniven på strupen i och med att Linux/raspberry ingår i ett projekt mot kund och bägge grejerna var nya för mig för ett år sedan. Utanpå detta behövde jag lära mig PHP. Tyvärr kastas man in mitt i allt och lyxen o lära sig nåt nytt från början har hoppats över - igen. Därav frågorna. Jag kan ändå glädja mig åt att kunden accepterade leveransen vi gjorde i somras. Trots buggar o annat såg han möjligheterna.
Jag nyttjar Google mycket. Hade inte fixat detta utan Google och forumena. Sen har jag ett anteckningsblock i MS One Note där jag skriver stödord och korta kommentarer. Däremot är man-pages en lucka för mig. Jag använder --help men det är ju bara ytlig hjälp. Jag vet inte varför man-pages har parameters. Har inte hunnit satt mig in i det. Men ska göra det nu. Måste inte den installeras?

Permalänk
Medlem
Skrivet av Sweedland:

Ok. Ja. Jag lever också på programmering och elektronik. Är konsult. För min del har jag kniven på strupen i och med att Linux/raspberry ingår i ett projekt mot kund och bägge grejerna var nya för mig för ett år sedan. Utanpå detta behövde jag lära mig PHP. Tyvärr kastas man in mitt i allt och lyxen o lära sig nåt nytt från början har hoppats över - igen. Därav frågorna. Jag kan ändå glädja mig åt att kunden accepterade leveransen vi gjorde i somras. Trots buggar o annat såg han möjligheterna.
Jag nyttjar Google mycket. Hade inte fixat detta utan Google och forumena. Sen har jag ett anteckningsblock i MS One Note där jag skriver stödord och korta kommentarer. Däremot är man-pages en lucka för mig. Jag använder --help men det är ju bara ytlig hjälp. Jag vet inte varför man-pages har parameters. Har inte hunnit satt mig in i det. Men ska göra det nu. Måste inte den installeras?

Ja, det där med att kastas in i okända grejer har vi nog alla i dessa branscher smakat på, och ibland måste man hoppa över mindre viktiga delar, men att skippa att bekanta sig med man-pages är att skjuta sig i foten. Har precis kört min första månad som linux-sysadmin och är det fyra saker jag inte skulle ha klarat mig utan så är det grundläggande mappstruktur, filrättigheter, google och man-pages. Med det kan man hanka sig fram rätt så långt!

Dagens tips:

$ man man

Visa signatur

Desktop: AMD 3950X, 64 GB RAM, Nvidia 4070 ... (Windows 11)
Serverdesktop: AMD 5600G, 64 GB RAM (Proxmox)
Labbmiljö: Supermicro SC825 X9DRi-F 2xE5-2667v2 64GB RAM
Kamera: Canon R5, Canon RF 100-500, Laowa 100mm f/2.8, Canon RF 24-70 f/2,8

Permalänk
Inaktiv

Gör det inte svårare än det är, skall alla ha tillgång till ditt kommando så lägger du den i /usr/bin helt enkelt.

vi /usr/bin/customfind
chmod +x customfind

customfind fungerar nu direkt i terminalen.

Om du inte gillar att leka med permissions och sådant och du vill att bara root skall kunna köra scriptet te.x (sudo är ett förderv) så för att göra det på det nya sättet med EUID börjar du bara såhär:

#!/bin/bash
FILE="/tmp/out.$$"
GREP="/bin/grep"

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi