Puncte:4

De ce shell-ul nu găsește un fișier în directorul curent numai după numele său?

drapel cn

Am descărcat codurile VS .deb fișier pentru Ubuntu. L-am redenumit în vs.deb.

Apoi merg la directorul meu de descărcări:

cd ~/Descărcări

Și acum că sunt aici, încerc să-l instalez:

sudo apt install vs.deb

Și iată ce primesc:

Citirea listelor de pachete... Gata   
Construirea arborelui de dependență          
Citirea informațiilor despre stare... Gata   
E: Imposibil de localizat pachetul vs.deb   
E: Nu am putut găsi niciun pachet după globul „vs.deb”

Dar când îl instalez folosind ./vs.deb, apoi se instalează:

sudo apt install ./vs.deb

De ce Linux nu acceptă numele fișierului în același director fără a necesita calea relativă?

David avatar
drapel cn
Directorul curent este definit în orice instrucțiune PATH? Cred că nu, prin urmare, aveți nevoie de ./ Acesta este bine cunoscut și nu este un comportament stupid.
Kulfy avatar
drapel mz
Răspunde asta la întrebarea ta? [Cum instalez un fișier .deb prin linia de comandă?](https://askubuntu.com/questions/40779/how-do-i-install-a-deb-file-via-the-command-line) Citând din [răspunsul lui Braiam](https://askubuntu.com/a/769542): *"Chiar dacă sunteți în directorul cu pachetul, trebuie să dați o cale folosind `./` la început"*
guiverc avatar
drapel cn
Încercați să instalați un fișier; deci este necesară o cale. Comanda dvs. fără cale este să descărcați și să instalați numele pachetului pe care l-ați furnizat (este mai sigur să nu presupuneți că ar putea fi un fișier, ci un pachet dintr-o sursă aprobată).
Peter Cordes avatar
drapel fr
@David: Dacă vorbiți despre variabila de mediu `PATH`, de ex. `/usr/local/bin:/bin:...` atunci nu, nu ar avea sens ca `apt` să caute `$PATH` fișiere `.deb` date ca argumente. Consultantul a făcut o presupunere greșită cu privire la relevanța shell-ului. Comentariul tău ar putea induce în eroare pentru începătorii care nu realizează că nu se aplică de fapt; Aș sugera să-l ștergeți.
Puncte:19
drapel cn

Ceea ce experimentezi nu este legat de coajă, ci de modul în care apt comanda interpretează argumentele de pe linia de comandă.

Acesta are ca scop în primul rând instalarea pachetelor din depozitele de software. În mod implicit, un argument pentru apt înseamnă numele unui pachet din sursele software. Mesajul:

E: Imposibil de localizat pachetul vs.deb

indică clar că un pachet vs.deb nu există în sursele software.

Încă, apt vă permite să instalați direct un fișier descărcat .deb fișierul pachet și rezolvați dependențele pentru acesta. Trebuie să oferiți o cale explicită a fișierului pentru a indica că doriți să instalați un .deb fişier. ./vs.deb indică deja o cale de fișier: ./ înseamnă directorul curent, deci apt va găsi vs.deb fișier în directorul curent.

De fapt, nu este niciodată shell-ul care „găsește” un fișier. Shell-ul transmite doar argumente aplicației și depinde de aplicație să interpreteze aceste argumente. Cel mult, shell-ul se extinde (de exemplu, înlocuiește * cu toate numele de fișiere sau ~ cu calea completă a folderului dvs. de acasă) sau înlocuire variabilă (de ex. $HOME este înlocuit cu conținutul acelei variabile).

chrylis -cautiouslyoptimistic- avatar
drapel er
Probabil, extinderea bretelor _nu_ se califică drept „găsirea” fișierelor.
Peter Cordes avatar
drapel fr
Predecesorul lui `apt`, `apt-get`, nu a putut niciodată să ia un `.deb` ca opțiune de linie de comandă, doar un nume de pachet; a trebuit să utilizați `dpkg -i` pentru a instala un fișier .deb. Deci, există un precedent istoric pentru instrumentele de pachete de nivel superior Debian pentru a *nu* interpreta argumentele ca căi, cel puțin nu în mod implicit.
drapel cn
@chrylis-cautiouslyoptimistic- Extinderea Brace nu face nimic legat de fișiere, este o transformare pur textuală. Extinderea wildcard, pe de altă parte, caută fișiere care se potrivesc.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.