Puncte:0

Mutați în dosar fără a utiliza „exec”

drapel in

În VM-ul meu, proiectele mele sunt la /var/www/vhosts/projectname/httpdocs/.
Când pornesc mașina, pornesc de la /home/vagrant/.

Am creat un script care mă duce instantaneu la proiectul pe care mi-l doresc. Problema este că scriptul folosește exec și creează o nouă sesiune de fiecare dată când îl folosesc.

Acesta este codul meu:

#!/usr/bin/env zsh

dacă [ -z "$1" ]; atunci
   echo „Niciun proiect specificat”
   iesirea 1
fi

cd /var/www/vhosts/"$1"/httpdocs/ || Ieșire

ecou "---------------------"
echo „Proiect: $1”
ecou „ https://$1.vm/”
ecou „ https://$1.vm/typo3”
ecou "---------------------"

exec zsh

Există o altă modalitate de a seta calea mea curentă fără a crea o nouă sesiune?
Mulțumiri

muru avatar
drapel us
De ce ai nevoie de un scenariu? De ce să nu scrieți o funcție și să puneți totul în ea, cu excepția `exec zsh`?
bac0n avatar
drapel cn
..... și schimbați toate ieșirile pentru a reveni...
Puncte:4
drapel cn

Un script rulează într-adevăr într-un subshell, unde directorul curent este schimbat. Acest mediu este distrus când scriptul este încheiat. Deschiderea unui shell interactiv (exec zhs) este necesar pentru a interacționa cu mediul modificat, care deschide încă un alt subshell decât cel în care rulează scriptul.

Folosind un funcția shell poate fi cel mai potrivit pentru ceea ce vrei să faci.

changedir () {
   cd „$1”
   echo „Proiect: $1”
}

Includeți o astfel de funcție în dvs ~/.zshrc fisier (.bashrc pentru utilizatorii bash). Când ieși, apoi redeschide terminalul, comanda changedir va fi disponibil.

Alternativ, ar trebui sursă scriptul dvs mai degrabă decât să-l execute. De asemenea, asta ar putea fi implementat destul de elegant prin definirea unui alias:

alias changedir='sursa <calea script-ului dvs.>'

De asemenea, ar trebui inclusă o definiție de alias ~/.zshrc (sau ~/.bashrc) a fi persistent. Similar cu abordarea anterioară, o comandă changedir devine disponibil cu care se completează automat Tab.

Pentru un caz de utilizare mai general, în care pur și simplu doriți să comutați cu ușurință la unele directoare adânci în arbore, vedeți mai multe opțiuni Aici.

vanadium avatar
drapel cn
@steeldriver ai dreptate, iar eu am gresit. Probabil că o funcție shell este cea mai potrivită pentru acest job, pe care l-am inclus acum în răspuns.

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.