Puncte:2

Open Ubuntu terminal using batch file on windows with command?

drapel cn

I automate many processes on windows using batch files and putty.

E.g ( login_server7.bat ):

start C:\Users\Jack\Documents\putty.exe -ssh 1.1.1.1 -l user123 -pw "bleh"

How am I able to start an Ubuntu terminal and run a command automatically after opening a file?

Rather than manually opening the ubuntu terminal and typing my commands in?

Cannot see anything elsewhere on this topic. Regards

Puncte:2
drapel cn

Executabilul WSL este C:\Windows\System32\wsl.exe. Poți doar să tastați wsl în linia de comandă Windows și veți fi conectat la instanța WSL implicită. Sau tastați wsl -h pentru a obține lista cu toate opțiunile disponibile. În fișierele batch puteți utiliza:

C:\Windows\System32\wsl.exe <scriptul sau comanda dvs.>

Sau dacă trebuie să rulați comanda ca root:

C:\Windows\System32\wsl.exe sudo <scriptul sau comanda dvs.>

Probabil că o modalitate mai corectă este utilizarea wsl -e -- <comandă>, dar cele de mai sus funcționează bine pentru mine. Iată un exemplu mai detaliat: Ubuntu 18.04 pe daemonul cron WSL nu rulează după repornire.

Puncte:2
drapel vn

La fel de ps4080Răspunsul lui menționează, modul corect de a face acest lucru este wsl -e -- <comandă> (sau, de obicei wsl -e <comanda>).

Cu toate acestea, există de fapt câteva nuanțe pe care le puteți întâlni cu această tehnică și este plăcut să înțelegeți ce se întâmplă cu fiecare incantație exactă, astfel încât să o puteți folosi pe cea potrivită atunci când este necesar:

wsl <comanda>

  • Rulează shell-ul implicit pentru utilizatorul curent
  • ... ca un shell non-login, non-interactiv
  • ... în directorul transmis de procesul deținător Windows
  • Aleargă <command> în acea cochilie

În funcție de carcasa ta, poți vedea asta cu wsl ps -eH:

  PID TTY TIME CMD
    1 ? 00:00:00 init
   18 ? 00:00:00 init
   19 ? 00:00:00 init
   20 puncte/0 00:00:00 pește
   28 puncte/0 00:00:00 ps

Rețineți că este dificil să vedeți asta când bash este shell-ul tău implicit de atunci -c rezultă într-un implicit exec.

Faptul că acesta rulează în directorul procesului Windows care deține poate fi util, deoarece puteți face:

wsl ls -lh

... în PowerShell pentru a obține dimensiuni de fișiere „lizibile de om”, ceva care este surprinzător de greu de făcut in caz contrar.

Cea mai dificilă parte a acestui lucru este al doilea calificativ. WSL rulează shell-ul dvs. ca un shell non-login, non-interactiv atunci când este pornit în acest fel. Aceasta înseamnă că ~/.bashrc și ~/.bash_profile sunt nu provenit la pornire. Acest lucru poate provoca confuzie atunci când încercați să rulați o comandă care necesită ceva de făcut în fișierele de pornire (de exemplu, setarea unei variabile de mediu).

wsl -e <comanda>

  • Aleargă <command> la fel de cochilia
  • ... în directorul transmis prin procesul de deținere

The -e ocolește complet shell-ul implicit.

> wsl ps -eH
  PID TTY TIME CMD
    1 ? 00:00:00 init
    7 ? 00:00:00 init
    8 ? 00:00:00 init
    9 puncte/0 00:00:00 ps

Acesta poate fi puțin mai eficient, deoarece evitați supraîncărcarea de pornire a shell-ului, dar de obicei nu merită să vă faceți griji.

wsl -e bash -lic <comanda>

  • Aleargă bash ca shell-ul tău (indiferent dacă este shell-ul implicit sau nu)
  • Forțează să fie un shell interactiv de conectare (-li) astfel încât ~/.bashrc și ~/.bash_profile (și/sau altele) sunt obținute
  • ... în directorul transmis de procesul deținător Windows
  • Aleargă <command> în acea cochilie

Aceasta este versiunea de utilizat dacă comanda are nevoie de ceva din configurația de pornire.

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.