Windows 10 får kommandotolken Bash i senaste Insider Preview

Permalänk
Inaktiv
Skrivet av Yoshman:

PowerShell är ett sätt att kunna jobba med COM-instanser i ett skal, COM finns inte på Linux så vari ligger värdet att köra PowerShell under Linux?

All enkel scriptning i windows görs ofta i powershell och då kan man använda samma kod även i linux, det är annars lite arbete att koda om t.ex. ens xml-generera igen. Likaså brukar man slå upp saker i databaser, läsa jsonscript, modifiera excelfiler etc.
Angående json så kan man t.ex. hämta denna från en server. Och beroende på vad det står i denna så ändrar man någon parameter i en xml fil innan man startar applikationen, att göra detta i en batfil är inte lika enkelt.

Nå jag tycker det är bra att det kommer lite "linux" till windows, problemet idag är att det finns så fruktansvärt mycket man ska kunna och anpassa efter. Och det är bra att fler "tekniker" fungerar på fler saker. Få se vilka linuxsaker jag själv kommer att använda, det krävs dock att de mer seriösa windowsversionerna (windows server) får stödet innan jag börjar.

Permalänk
Datavetare
Skrivet av anon159643:

All enkel scriptning i windows görs ofta i powershell och då kan man använda samma kod även i linux, det är annars lite arbete att koda om t.ex. ens xml-generera igen. Likaså brukar man slå upp saker i databaser, läsa jsonscript, modifiera excelfiler etc.
Angående json så kan man t.ex. hämta denna från en server. Och beroende på vad det står i denna så ändrar man någon parameter i en xml fil innan man startar applikationen, att göra detta i en batfil är inte lika enkelt.

Nå jag tycker det är bra att det kommer lite "linux" till windows, problemet idag är att det finns så fruktansvärt mycket man ska kunna och anpassa efter. Och det är bra att fler "tekniker" fungerar på fler saker. Få se vilka linuxsaker jag själv kommer att använda, det krävs dock att de mer seriösa windowsversionerna (windows server) får stödet innan jag börjar.

Fast om det handlar om manipulation av text eller filsystem så är min erfarenhet att PowerShell är smärtsamt långsamt. Gjorde en del tester kring detta och med en hyfsat enkel pipeline med kanske tre-fyra steg var Bash mer än 100 gånger snabbare än motsvarande med PowerShell.

Fördelen med PowerShell är just att den möjliggör automatisering av saker som man når via COM eller .NET, inget är något som normal sett används i Linux. Använder man ingen av dessa tekniker, vilket man knappast lär göra ens med Ubuntu på Windows är Bash på alla sätt ett bättre val i min mening.

Själv lärde jag mig Windows före jag kom i kontakt med Linux, efter att ha jobbat med båda dessa OS (och en rad andra OS) skulle jag säga att *NIX är generellt sett betydligt mindre komplex jämfört med Windows. Att många hävdar att Linux är svårt skulle jag säga är precis är vad som beskrivs i denna föreläsning om "Simple made Easy".

Windows är lätt att jobba för en stor skara användare för de är vana med systemet medan Linux är svårt för man inte känner till systemet. Däremot är ett Linux ett enklare system att jobba med än Windows. Så Windows är "easy" för det är något man känner till, Linux är "simple" då det i sin design består av saker som var för sig har relativt få uppgifter i livet.

För egen del for jag nog fortsätta med virtualiserad Linux och separat Linux-dev maskin. Tittade lite på detta och använder tyvärr flera funktioner som beror av rätt unika Linux-finesser (främst inom nätverk). Inget stort problem då Linux är väldigt effektivt när man kör det virtualiserat utan UI. Kanske kan använda Ubuntu-på-Windows för att köra SSH så man kan avinstallera Cygwin

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av enbom:

Nice med ett mörkt tema.

Japp, äntligen. Som jag har väntat!

Visa signatur

Spel: Intel i5 9600K@4,8GHz | Hydro H100i Pro | 32GB Vengeance RGB Pro 3000MHz | Z390 Gaming X | HX750 | GTX1060 6GB | MSI Optix G273QF | Corsair Obsidian 500D RGB | EVO 970 Pro 500GB + EVO 980 1TB
Barnens: Intel i7 920 | 16GB Corsair | GA-X58A-UD7 | HX520 | GTX460 SLI | P182 | EVO 840 256GB

Permalänk
Medlem

Gillar starkt grejen med att ha en POSIX-miljö direkt i Windows, men så länge man inte kan starta Windowsbinärer från Bash är det tyvärr bara en sämre variant av MSYS2/Cygwin då man t.ex. inte kan köra ett Linux-baserat build system med MSVC som kompilator.

Om det ska vara en vattentät barriär mellan Linux-delen och resten av OS:et kan man lika gärna dra igång en VM istället och få tillgång till alla features som Linux erbjuder.

Visa signatur

Assembly är ett högnivåspråk.

Permalänk
Medlem
Skrivet av Petterk:

Ärligt talat beskriver den bilden hur det såg ut i NT3.X/4/Windows 2000 när POSIX-lagret var källkodskompatibilitet och för integration. Inte hur det ser ut idag när POSIX och OS/2-stödet varit borta i 15 år redan. WSfL sitter där i kärnan också, men är ett linux-kompatibilitetslager som kör Linuxbinärer i en anpassad version av Ubuntu utan kärnan. Det liknar mer hur du kan köra Linuxbinärer i FreeBSD, där du kan installera en linuxmiljö genom att aktivera kernelmodulen och installera ett gäng linuxbibliotek, fast mindre fokuserat på att programmen ska blandas i plattformen.

Det är "Linux" även om det inte är Linuxkärnan, då det är till för att köra binärer (ELF) kompilerade mot Linux ABI, det är inte för att köra mot GNU Hurds ABI eller något annat ABI. Det blir inte bara GNU. POSIX-program går ju att kompilera direkt mot Windows med hjälp av lite programvara, men det är inte vad de gör.

Fast GNU är fortfarande inte samma sak som Linux. Med detta resonemang borde man isf skriva det klassiska "GNU/Linux".
Dessutom har Microsoft själva skrivit att det är "*NIX stöd i windows" eller någonting i den stilen.

Permalänk
Medlem
Skrivet av Ertiyed:

Fast GNU är fortfarande inte samma sak som Linux. Med detta resonemang borde man isf skriva det klassiska "GNU/Linux".
Dessutom har Microsoft själva skrivit att det är "*NIX stöd i windows" eller någonting i den stilen.

Nej, Microsoft beskriver det som Windows Subsystem for Linux och en anpassad variant av Ubuntu (initskript, hantering av användare och lite småsaker skiljer) eller "Bash on Ubuntu on Windows". WSL är kompatibilitetslagret för att köra en "linux-miljö" som består av Ubuntu med deras Linuxbinärer. Programfilerna är som Yoshman påpekar samma som för 14.04 på x86-64 i övrigt, och hämtas från samma källor, körs omodifierade. Det körs som egna processer i NT-kärnan och är inte tänkt för att samverka med Windowsprogram, så som SUA. Vill du ersätta SUA (som inte längre är en del av Windows) så ska du titta på sånt som Cygwin eller MKS Toolkit. Så de beskriver det som Bash för Linux, på Ubuntu på Windows, som ett Linux-program körandes i deras kompatibilitetslager och alltså för att köra Linux-verktygen kompilerade som Linuxprogram på Ubuntu på Windows. En del verkar tänka GNU/Linux, men utan Linux, men nej det blir inte GNU på Windows för att WSL finns, en traditionell "linuxmiljö" med linuxprogram finns fortfarande där.

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on...
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-...

Permalänk
Medlem

Då kan man säga att wine är "windowsbaserat" eftersom det kan köra omodifierade windowsbinärer i en GNU/Linux-miljö?

Hur som helst, det är trevligt att möjligheten finns åt båda hållen.

Permalänk
Medlem
Skrivet av ronnylov:

Då kan man säga att wine är "windowsbaserat" eftersom det kan köra omodifierade windowsbinärer i en GNU/Linux-miljö?

Hur som helst, det är trevligt att möjligheten finns åt båda hållen.

Nej, men man kan säga att man kör Windows-program i WINE då du inte har något av Microsofts Windows i WINE, precis som du kör Linux-program i Ubuntu på Windows här. WINE implementerar även en hel del av user-land utan att man behöver kopiera in Windows systemfiler och inbyggda programbibliotek i många fall, här installerar du Ubuntu och det är alltså baserat på en linuxdistro byggd som en linuxdistro. Det är Microsoft som uttrycker att det är en miljö för GNU/Linux-verktyg och Linux-program i Ubuntu, som Linuxbinärer på Windows. Det finns ingen anledning att påstå att Microsoft sagt annat. Hade Microsoft byggt in "emulering" av NT-kärnan i linuxkerneln (eller släppt patchar för dito) och skeppat Windowssystemet utan kärnan så hade jag däremot klassat det som en (delvis) "Windows-miljö" på Linux, med citattecken. Sånt som Win32 är ju faktiskt i user-mode. Det enda WINE kör från Windows är det du själv installerar, på 90-talet fanns däremot faktiskt program som liknade WINE för olika unixsystem, men byggde på Windows källkod.

Permalänk
Datavetare
Skrivet av Petterk:

Nej, men man kan säga att man kör Windows-program i WINE då du inte har något av Microsofts Windows i WINE, precis som du kör Linux-program i Ubuntu på Windows här. WINE implementerar även en hel del av user-land utan att man behöver kopiera in Windows systemfiler och inbyggda programbibliotek i många fall, här installerar du Ubuntu och det är alltså baserat på en linuxdistro byggd som en linuxdistro. Det är Microsoft som uttrycker att det är en miljö för GNU/Linux-verktyg och Linux-program i Ubuntu, som Linuxbinärer på Windows. Det finns ingen anledning att påstå att Microsoft sagt annat. Hade Microsoft byggt in "emulering" av NT-kärnan i linuxkerneln (eller släppt patchar för dito) och skeppat Windowssystemet utan kärnan så hade jag däremot klassat det som en (delvis) "Windows-miljö" på Linux, med citattecken. Sånt som Win32 är ju faktiskt i user-mode. Det enda WINE kör från Windows är det du själv installerar, på 90-talet fanns däremot faktiskt program som liknade WINE för olika unixsystem, men byggde på Windows källkod.

Fast finns en väldigt viktigt teknisk skillnad mellan hur WINE fungerar och hur Windows Subsystem for Linux (WSL) fungerar.

WINE är en implementering av userland biblioteken som utgör Win32 APIet, det går att köra omodifierade binärer då system APIerna i Windows alla ligger i .dll-filer och länkas dynamiskt. Men i slutändan är det inte exakt samma kod du hittar inuti applikationens adressrymd när den kör i Windows resp. WINE då vissa bibliotek som laddas dynamisk skiljer sig radikalt. I den bästa av världar ska inte det göra någon skillnad, men i praktiken finns en relevant vattendelare här.

Den än viktigare aspekten är: antal Win32 APIer är enormt och långt ifrån alla är dokumenterade.

WSL lägger sig överhuvudtaget inte i user-land delen, det är exakt samma kod som finns inuti applikationernas adressrymd vare sig de kör på Windows- eller Linux-kärnan, redan här har man eliminerat en felkälla. Men än viktigare är att det inte finns mer än strax över 300 systemanrop in i Linux-kärnan och alla dessa hittar man i en enda fil (och där ligger alla, kan inte finnas "dolda" systemanrop då CPUn kommer vägra hantera systemanrop som OSet inte explicit tillåter).

Nu kommer det ändå finnas applikationer som inte fungerar med WSL, t.ex. saknas många noder i /dev, /proc och /sys och dessa virtuella filsystem filsystem är också en form av API mot Linux-kärnan. Sedan finns också finesser i Linux-kärnan som saknar motsvarighet i Windows så dessa lär man ju inte få till.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Petterk:

Nej, Microsoft beskriver det som Windows Subsystem for Linux och en anpassad variant av Ubuntu (initskript, hantering av användare och lite småsaker skiljer) eller "Bash on Ubuntu on Windows". WSL är kompatibilitetslagret för att köra en "linux-miljö" som består av Ubuntu med deras Linuxbinärer. Programfilerna är som Yoshman påpekar samma som för 14.04 på x86-64 i övrigt, och hämtas från samma källor, körs omodifierade. Det körs som egna processer i NT-kärnan och är inte tänkt för att samverka med Windowsprogram, så som SUA. Vill du ersätta SUA (som inte längre är en del av Windows) så ska du titta på sånt som Cygwin eller MKS Toolkit. Så de beskriver det som Bash för Linux, på Ubuntu på Windows, som ett Linux-program körandes i deras kompatibilitetslager och alltså för att köra Linux-verktygen kompilerade som Linuxprogram på Ubuntu på Windows. En del verkar tänka GNU/Linux, men utan Linux, men nej det blir inte GNU på Windows för att WSL finns, en traditionell "linuxmiljö" med linuxprogram finns fortfarande där.

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on...
https://blogs.msdn.microsoft.com/commandline/2016/04/06/bash-...

Till och med i en av länkarna du har med skriver MS: "run native Bash and GNU/Linux command-line tools"
Att det råkar vara ubuntu gör det ju inte mindre GNU/Linux.
Oh well. Det är väl en tolkningsfråga på hur man ser på förhållandet mellan GNU och Linux vilket inte alla är överens om.

Permalänk
Medlem

@Yoshman

Ja det är som sagt en stor skillnad att implementera egen variant av ett stort userland vilket ju var poängen, det är det ju alldeles oavsett hur man hanterar saker som minneshantering, trådar med mera, men ju längre tiden går är det ju snarare en styrka då de uppnår en kompatibilitet (med gamla grejer) som är större än ett modernt Windows själv har i vissa fall även om jag själv föredrar andra lösningar. Känns inte som att dra in WINE och sen dra in massor msvc-runtimes och .NET-paket och annat på det, man enligt avtalen inte ens får installera på WINE är sån bra lösning. Långt in i framtiden kanske det snarare blir så att man kör winelib för att bygga gamla Windowsprogram för (ett modernt) Windows. På 90-talet fanns det som sagt kompatibilitetslager för Windows-program på andra operativ som körde med Microsofts källkod också, men varken det eller en lösning där man bara implementerar NT-kerneln och tar alla userland-komponenter från Windows (vare sig som källkod eller binärer) är troligt idag, då en sådan lösning utan väldigt tillåtande licenser i princip inte är värd något idag och man undviker massor problem av att bara installera det i en virtuell maskin.

Å andra sidan tar det väldigt lite resurser för Microsoft att göra detta med Linux, där de i princip behöver bry sig om WSL (visst de behöver i princip emulera en specifik kernel, /proc osv kommer ge problem och de har inte ens fungerande tty uppe) och conhost. Lät på de i build som det var en handfull utvecklare inblandade. Tydligen verkar inte Canonical behöva göra något lyftande alls däremot, ubuntu-image:n innehåller inget specifikt för WSL alls och är bara en tar.gz av Ubuntu för molnet, så mycket magisk sås lär ligga i WSL/LXSS. WSL har tydligen kopplingar till nedlagda Project Astoria, och det stämmer väl säkert.

Problemet där är mer att miljön inte riktigt beter sig som en vanlig dator, bara en sån sak som init-systemet måste helt skilja sig, och att Microsoft mer eller mindre explicit måste stödja en specifik distribution. På Solaris skulle jag nog säga att det höll tillbaka det lite, men här är det inte lika stor grej då det knappast är tänkt att användas som servermiljö. Där är det ju bara att virtualisera och köra valfri programvara istället.

Permalänk
Medlem
Skrivet av Ertiyed:

Till och med i en av länkarna du har med skriver MS: "run native Bash and GNU/Linux command-line tools"
Att det råkar vara ubuntu gör det ju inte mindre GNU/Linux.
Oh well. Det är väl en tolkningsfråga på hur man ser på förhållandet mellan GNU och Linux vilket inte alla är överens om.

Tror du missuppfattat en diskussion du gett dig in på efter att två tidigare personer deltagit där redan och haft en annan syn på det än du. Jag menar att det är en "linux-miljö" för Linux-program medan de jag diskuterade med börja prata om att det bara blev GNU eller att det inte hade något med Linux att göra alls när kerneln saknas. – Det var därför jag länkade där Microsoft beskriver det som en Linuxmiljö. Och jag svarade på din frågeställning att de inte sagt "*NIX-stöd för Windows eller något i den stilen" och gav dig vad de sagt.