Linux - miért «cd» nem működik egy shell script bash shell, kód q - egy orosz (ru)
A szkriptek futnak belül alhéj a héj, és mindegyiknek megvan a saját alburok koncepció, mely az aktuális könyvtárban. cd sikerül, de amint a alhéj kilép, akkor vissza egy interaktív shell, és nincs semmi megváltozott.
Az egyik módja, hogy körülötte - helyette egy alias:
Te nem csinál semmit! Megváltoztatta a könyvtár, de csak a alhéj hogy fut a script.
Meg lehet futtatni a scriptet a jelenlegi folyamat segítségével «dot» csapatban:
De én inkább hez Greg használta alias ebben az egyszerű esetben.
CD-t a script dolgozott műszakilag, mert megváltoztatta a héj mappát, amelyben végre a forgatókönyvet, de ez egy külön folyamat, ami látható az interaktív shell.
POSIX-kompatibilis módon oldja meg ezt a problémát, hogy meghatározza az eljárást a héj helyett parancssori script.
Egyszerűen adja be kerül az egyik a különböző shell indító fájlokat.
Ahhoz, hogy hozzon létre egy szkript bash, amely rögzítésre kerül a könyvtárba cd:
Hozzon létre egy script fájlt
Ezután hozzon létre egy alias a startup fájlt.
- Létrehoztam egy run fájlt, amelyben csepp minden a álnevek és testre szabható funkciókat.
- Azt majd küldje el a fájlt a .bashrc, úgy, hogy volt, meg minden indításkor.
Például hozzon létre a fő álnevek fájl / funkciók: /scripts/mastercode.sh
(Put alias be a fájlt.)
Aztán a végén a fájl .bashrc.
Most már könnyen felírható java könyvtárba, egyszerűen adja cdjava, és ha már ott van.
cd végezzük egy shell script. Amikor a szkript véget, a héj, akkor minden marad a könyvtárban, ahol voltál. „Forrás” forgatókönyv, ne indítsa el. helyette:
(Figyeljen a pont és egy szóköz a szkript nevét.)
Jeremy Rutena ötlet a szimbolikus kapcsolatok használatának az elképzelés, amely nem adja át bármely más választ. használata:
A vezető vastagbél fontos; Ez azt jelenti, hogy ha az aktuális könyvtárban van egy könyvtár «dir», akkor «cd dir» változásokat, ahelyett, hogy ugrik valahol máshol. A beállított érték, mint látható, a következőket teheti:
És ha az aktuális könyvtárban nincs alkönyvtár java, hogy elviszi közvetlenül a $ HOME / projektek / java - nincs alias, nem script, nem kétséges, exec parancs vagy pontot.
Saját $ HOME - / Users / jleffler; Saját $ CDPATH:
Megvan a programkódot segítségével.
/
Itt van a programban
Itt van a terminál