Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Bash & Source: not found error  (gelezen 2508 keer)

Offline MarkRaats

  • Lid
Bash & Source: not found error
« Gepost op: 2011/02/25, 11:23:36 »
Ik wil via een script de environment aanpassen, het script is langer dan hier onder, echter hier loopt het script fout.
Derest van het script werkt goed, boven in staat ook:
#!/bin/bash
set -e

Dit had ik eerst.
sudo chmod 777 /etc
sudo rm /etc/environment
echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ruby/bin"' >  /etc/environment
sudo chmod 755 /etc
source /etc/environment
Error, source not found

sudo chmod 777 /etc
sudo rm /etc/environment
echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ruby/bin"' >  /etc/environment
sudo chmod 755 /etc
. /etc/environment
geen error, echter werkt de command
ruby -vniet.

Dit commando werkt wel als ik het niet via script doe, bij beide commando's
source /etc/environment. /etc/environment
Hopelijk kunnen jullie me helpen om het ook te laten functioneren in een bashscript

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: Bash & Source: not found error
« Reactie #1 Gepost op: 2011/02/25, 21:42:54 »
De methode om de /etc map tijdelijk 777-permissies te geven is een risicovolle. Het is onveilig en zou je systeem behoorlijk overhoop kunnen halen.
Als je dit alleen doet om /etc/environment aan te passen, dan is er een betere manier:
echo 'PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/ruby/bin"' |sudo tee /etc/environment
Op deze manier werkt het wel, zonder dat je de rechten aan hoeft te passen.

Verder is het verwijderen van /etc/environment ook niet nodig, aangezien je de inhoud compleet overschrijft via het "tee" commando.

Wat meer info over het source-commando: http://www.tldp.org/LDP/abs/html/internal.html#SOURCEREF

Waarom het script fout zou kunnen lopen is niet direct duidelijk, maar ik verdenk dat "set -e" de oorzaak is.
Als /etc/environment niet bestaat, dan stopt het script al bij het rm commando. Ook als een willekeurig ander commando een exit code heeft die anders is dan 0 stopt het script op die plek.

Offline ivo

  • Lid
Re: Bash & Source: not found error
« Reactie #2 Gepost op: 2011/02/25, 23:07:22 »
Waarom wil je dat via een script doen?
Kennelijk wil je het aanpassen zodanig dat elke gebruiker deze omgevingsvariabele meekrijgt.
Waarom edit je het dan niet gewoon rechtstreeks met een editor in het file /etc/environment zelf?
Korte pijn en 100% succes.
There are only 10 types of people in the world; those who understand binary and those who don't.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: Bash & Source: not found error
« Reactie #3 Gepost op: 2011/02/26, 07:56:15 »
Het is inderdaad niet echt een bestand dat ik dagelijks aanpas ofzo, dus echt nuttig lijkt het me niet.
Maar als je dit op 100 systemen tegelijkertijd aan wil passen, dan is een scriptje wel weer handig.

Offline ivo

  • Lid
Re: Bash & Source: not found error
« Reactie #4 Gepost op: 2011/03/02, 22:20:39 »
There are only 10 types of people in the world; those who understand binary and those who don't.

Offline Johan van Dijk

  • Administrator
    • johanvandijk
Re: Bash & Source: not found error
« Reactie #5 Gepost op: 2011/03/03, 03:11:55 »
Volgens de link die ik eerder gaf is "source" ook een geldig commando in Bash (http://www.tldp.org/LDP/abs/html/internal.html#SOURCEREF)
Dat topic waar jij naar linkt is uit 2004, dus dat is al van even geleden :D

Re: Bash & Source: not found error
« Reactie #6 Gepost op: 2011/03/03, 08:16:16 »
euhm, ik veronderstel dat dit een script is dat je in /usr/bin geplaatst hebt of zo?

Logisch dat het niet werkt dan...

Bij het uitvoeren van dat bestand wordt namelijk een *nieuwe* bash-shell gestart. In *die* bash-shell wordt het bestand /etc/environment gesourcet en PATH gezet, niet in jouw (login-) shell. De oplossing is PATH te exporteren (met het export-commando)

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net