Ha begépelem ezt:
# which wget
visszakapom az eredményt, hogy
/usr/bin/wget
De ha ezzel próbálkozom:
# which time
akkor nem kapok eredményt. Miközben a time parancs közöni szépen jól megvan, működik rendesen. Miért lehet ez?
Egyébként egy script ellenőrzi a szükséges parancsok meglétét, ezért lenne szükség erre.
- 1031 megtekintés
Hozzászólások
Tippelek: lehet, hogy a time nem külső program, hanem mondjuk a bash része?
Amúgy nálam /usr/bin/time-ot ad vissza, de nélküle is működik a time parancs (legalábbis így látom). :)
- A hozzászóláshoz be kell jelentkezni
A time egy kulso binary is lehet meg egy bash keyword/function is:
$ which time
/usr/bin/time
$ rpm -qf /usr/bin/time
time-1.7-37.1.el6.x86_64
$ type time
time is a shell keyword
Hasznald a type-ot which helyett ilyen esetekben es megleled amit keresel. :)
- A hozzászóláshoz be kell jelentkezni
Thx, úgy volt ahogy mondtátok. Ez megoldotta a problémát:
# apt-get install time
- A hozzászóláshoz be kell jelentkezni
Ez nem oldott meg semmilyen problémát, hanem eltakart előled egy láthatóan meg nem értett dolgot.
Van a shell, amit éppen használsz (fent többek kapásból azt mondják, hogy bash, de lehet sh/ksh/csh/tcsh/bash/zsh/ash/dash/és í. t.). Annak vannak saját *belső* parancsai, amit ő tud, az adott parancs működéséhez nem kell semmi, csak maga a shell. (Pl, a teljesség igénye nélkül: cd, set, alias) Meg van egy halom un. külső parancs, ami valahol valamilyen (többnyire) "bináris"-ként emlegetett fájlban van (megint csak példa: vi, more, ls). Mint alant utaltak rá, a "which" egy olyan parancs, ami eredetileg a csh-ban létezett, belső parancsként, és kb annyit csinált, hogy a paraméterét fájlként megkereste a PATH-változóban felsorolt könyvtárakban. Ebből az idők során szép káosz alakult ki, van ahol lett "which" külső parancsként (pl. olyan script, mint ami szintén itt alant szerepel), meg bináris, meg néhány másik shell-ben is implementálták, de sosem lett szabványos - azaz vagy van, vagy nincs. Helyette az eredeti Bourne-shellben (sh) volt a "type" parancs. De pl. a Korn-shellben e helyett megjelent a whence (és lett egy "type" nevű alias "whence -v" tartalommal). Aztán ezen kívül megjelent az emlegetett "command -v" forma is. Sajnos nincs olyan, hogy az a "legjobb", pl. a "type" az még elég régi Bourne-shell esetén is működik, ellentétben a "whence / which / command" formákkal, de pl. (t|)?csh alatt a which esélyes, hogy működik, míg a többi nem. Szóval ha nagyon akarod, akkor elsőként próbálj type -ot, másodikként which-et, vagy bármi mást. Ismert környezet (shell) esetén persze lehet tudni, hogy mi a megfelelő.
Végül: ha a te rendszereden a "which" külső parancs, akkor természetesen nem fogja ismerni az éppen használt shell belső parancsait (míg a shell nyilván igen). Fent emlegetett helyzet pont ilyen: a "time" belső parancsként létezett eredetileg, mí a "which" külső parancs. Azzal, hogy telepítettél egy másik (külső) "time" parancsot, csak annyit értél el, hogy azt látod a which kimenetében, de használni a shell az esetek többségében a belsőt fogja, így igazából maadat verted át.
- A hozzászóláshoz be kell jelentkezni
which helyett command -v time hordozhatobb, szebb, tisztabb erzes, which csh maradek, regen igy nezett ki valahogy:
#!/bin/csh
which "$@"
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
$ type time
time is a shell keyword
$ which time
/usr/bin/time
Ja má írta valaki, bocs.
- A hozzászóláshoz be kell jelentkezni