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. .

/ dózis nem működik, mert nem változik meg a terminálon, csak megváltoztatja a könyvtár kifejezetten az adott script.

Itt van a programban

Itt van a terminál

Kapcsolódó cikkek