[Debian] echo [zmienne srodowiskowe]


(Manonim93) #1

Dlaczego jak wpisze bezpośrednio na Debianie w konsoli:

echo $PS1

to wyświetla mi tą zmienną, ale jak utworze skrypt np. skrypt.sh:

echo $PS1": znak zachety"

i wpisze w terminal:

*/skrypt.sh

to wtedy mi tej zmiennej nie wyświetla. Plik ma prawo do wykonywania i wykonuje się bo napis się wyświetla ale bez zmiennej

Tyczy się to zmiennych $PS1 $PS2 $HISTFILE $MAILCHECK $TMOUT, a np. $HOME wyświetla poprawnie.


(OgiX) #2

Dzieję się tak dlatego, że środowisko powłoki używanej do wykonania skryptu różni się od środowiska "interaktywnego". Nie wszystkie zmienne są obecne - bo po co, skoro nie da się ich wykorzystać? Dużo ograniczeń wynika też z problemu "czy chcesz by każdy program wiedział o tobie wszystko". Szczegóły znajdziesz w podręczniku powłoki.

Jeżeli chcesz dokładnie porównać, które zmienne są/nie są inicjowane wykonaj polecenie:

set >plik

oraz skrypt zawierający podobną konstrukcję. Wyników jest dużo, więc proponuję nie próbować nawet bez zrzutu do pliku :stuck_out_tongue:


(Kaka') #3

michal_93 ,

Rejestrując się na niniejszym forum zobowiązałeś się przestrzegać jego regulaminu. Niestety, w tym momencie łamiesz go nie tytułując poprawnie tematu. Proszę zapoznać się w pierwszej kolejności z regulaminem forum, a następnie z tym tematem. Po zapoznaniu się proszę poprawić tytuł tematu, używając przycisku zmien.gif