ChrisBuchholz skrev:Det er selvfølgelig muligt at smide din egen path-mappe foran i path når programmet starter, og så derefter sætte det tilbage til normal når programmet er færdig med at køre, men jeg synes det er en rigtig dum idé.
1) hvorfor? Hvorfor dog lave sådan nogen krumspring? Hvorfor ikke bare lave en variabel der indeholder "~/Dokumenter/kommandofiler" og så kalde dine scripts med
$path_var/navn_på_script.sh?
2) at gå ind og ændre sådan på path er en rigtig dum sport at komme igen med, især når det ikke er en langvarig ændring.
for at besvare dit spørgsmål dog, er løsningen på dit problem med den midlertidige ændring af path, noget i denne her stil (giver ihvertfald stuff til eftertanke):
Kode: Vælg alt
path_orig = $PATH
export PATH=$HOME/Dokumenter/kommandofiler:$PATH
# do something something...
# nu er vi færdige og sætter path tilbage til originalen
export PATH=$path_orig
Du er ikke bange for at ryste en stump kode ud af ærmet, og det ser endda ud til at virke, så rigtig mange tak for det.
Det er også helt fint med mig, at jeg afkræves begrundelser.
Man kan gøre så mange ting, som umiddelbart virker smart, men når man så fordyber sig lidt mere, så finder man ud af, at det alligevel ikke er nødvendigt. Derfor er det altid sundt at diskutere det på en god måde, før man gør alt for mange omstændige ting.
Men jeg er nok ved at nå frem til, at hvis der i det hele taget skal ændres på originalPATH'en, så skal det helst gøres via et sådant script, som jeg kan undlade at køre, når Ubuntu booter op.
Der må vel f.eks. være en simpel metode, så man i bootopfasen kan undgå at køre de filer, som man har lagt ind i System > Indstillinger > Sessioner.
Derved kan man sikre, at PATH'en til de uartige hjemmefuskede scripts bliver afbrudt.
Det sikrer selvfølgelig ikke mod, at et script stadig kan kaldes med "full qualified path", hedder det vist. Altså hvis hele adressen til scriptet angives i kaldet fra prompten.
F.eks. i denne stil:
$HOME/Dokumenter/Kommandofiler/jakobs_totale_ødelæggelses_script.sh
Gør man sådan, så mener jeg, at det må kunne gennemtvinge en kørsel uanset, hvordan PATH er sat i systemet, og det giver endda en meget hurtig response, fordi Ubuntu ikke behøver at søge efter filen, men kan gå direkte til den.
Det kan man gøre fra terminalprompten eller man kan gøre det i et script, og på den måde mener jeg også, at man kan få "sudo" til at virke på et script, selvom det ikke ligger i roden. Man skal bare lige kende problematikken (tak til Lars).
Altså på denne måde:
sudo $HOME/Dokumenter/Kommandofiler/jakobs_totale_ødelæggelses_script.sh
Eller du foretrækker måske denne version, som ser ud til at gøre det samme:
sudo ~/Dokumenter/Kommandofiler/jakobs_totale_ødelæggelses_script.sh
En anden fordel ved at ændre PATH via et privat script kan være, at man ikke behøver at rette i ~/.bashrc , man kan bare køre sit script, og ding dong, så er det ordnet, også på en helt ny installation.
Endelig var der min begrundelse om at visse programmer har brug for at ændre PATH midlertidigt.
Det ved jeg ikke helt sikkert, om er tilfældet i Linux, og jeg søger en bekræftelse.
I DOS husker jeg f.eks., at det kunne være en fordel at have en midlertidig PATH til Norton Commander, hvis den ikke skulle smide "nc.ini"-filer i alle mulige mapper.
Men når programmet afsluttes, så er det en fordel, at der ikke længere er PATH til mappen, da det forkorter søgetiden i PATH'en og reducerer risikoen for dubletter, at der er færre mapper.
Så alt ialt mener jeg da godt, at der kan være meget gode argumenter for at stable sådan et script på benene.
Men som det nok fremgår, så ved jeg ikke særlig meget om Linux endnu, og der kan sagtens være nogle vigtige parametre, som jeg ikke kender.
Testscriptet lægges her til kritik:
Kode: Vælg alt
#!/bin/bash
#Grundstammen i dette script er skaffet til veje via Ubuntu-Danmark.dk https://ubuntudanmark.dk/forum/viewtopic.php?p=40194#p40194
#Filens formål er at ændre path midlertidigt, mens et program køres.
#Sættes den sidste kommando ud af kraft, så stilles PATH ikke automatisk tilbage, før efter næste boot.
#
path_orig = $PATH
#
#nedenstående linje er en form for "debug", som jeg har lært af Laoshi til prøvekørsel. :-)
set -x
#
export PATH=$HOME/Dokumenter/kommandofiler:$PATH
#
#nedenstående linje sender output fra "set" til filen testres.ult, hvor jeg så efterfølgende kan læse, hvad PATH er på dette sted
#set > $HOME/Menu/testres.ult
#
# do something something...
# nu er vi færdige og sætter path tilbage til originalen
export PATH=$path_orig