Windows에 알맞은 쉘이없는 이유는 무엇입니까? [닫은]


19

나는 SO에 대한 주제를 읽었습니다. 왜 스크립팅 언어 (예 : ...)가 쉘 언어로 적합하지 않습니까? . 특히 Jörg W Mittag의 답변이 마음에 들었 습니다 Windows PowerShell. 따라서 20 년이 지난 후 Windows는 마침내 잘 설계된 셸 (Windows 1.0-1985, PowerShell 안정 릴리스-2009)을 갖습니다. 반면에 Unix 시스템은 1978 년 Bourne Shell 이후 다양한 쉘을 보유하고 있습니다. MS 면접에 관한 기사를 읽었으며 매우 "괴짜"회사에 대한 인상을 받았습니다. 나는 그들이 그 도구로 모든 작업을 수행하는 Unix 사람들과 비교하여 왜 명령 줄 도구가 필요하지 않은지 궁금합니다.


@JerryCoffin, 아마도이 업계에 얼마나 오래 있었는지에 달려 있습니다. 나는 여기서 시작해서 나에게 주어진이 위대한 소프트웨어에 매우 만족합니다. 큰 개선의 여지가 있지만 항상 그렇습니다.
Ski

1

답변:


16

iPod, iPhone (그 문제에 대한 모든 전화기) 및 iPad가 그렇지 않은 것과 동일한 이유 : 명령 줄은 Windows에서 컴퓨터와 사용자의 기본 상호 작용 채널이 아닙니다. 유닉스 나 GNU / 리눅스에 있기 때문에 더욱 성숙합니다. Linux GUI 데스크탑이 Windows와 비교하여 오랫동안 쓰레기가 된 이유와 같은 주장 (유닉스 명령 줄이 무료로 제공 되었기 때문에 Mac OS 종류의 속임수).


13

어쩌면 나는 지나치게 단순화하고 있지만 문화적인 것으로 생각합니다.

  1. Microsoft 문화권에서 개발자는 사용자를 위한 프로그램 작성에 중점을 둡니다 . 프로그램은 모두 GUI 기반입니다.
  2. 유닉스 문화에서 개발자는 다른 개발자를 위한 프로그램 작성에 중점을 둡니다 . 프로그램은 규모가 작으며 특정 일을 잘 수행하는 데 중점을 둡니다.

9

Microsoft가 Windows 용 셸을 작성하는 유일한 사람 일 이유는 없습니다. bash를 쓰는 사람들은 * nix 커널을 쓰는 사람들과 다릅니다. 루트 권한이 필요하지 않습니다. sysadmin이 설치 한 쉘이 마음에 들지 않을 때 사용할 수 있도록 자체 쉘을 컴파일했습니다. 더 나은 Windows 셸에 대한 진정한 요구가 있었다면 누군가가 작성했을 것입니다.


7

전화가 한 번도 없었기 때문에 추측합니다.

Windows 스크립팅 호스트는 Windows 98부터 표준으로 설치되었습니다. VBScript는 매우 유능했습니다. 또는 전체 Windows API에 액세스 할 수있는 명령 줄 도구를 쉽게 작성할 수 있습니다.

간단히 말해 Powershell은 같은 방향으로 나아가는 또 다른 단계 일뿐입니다. COM은 더 이상 인기가 없으므로 WSH는 상당히 학습 과정이되었습니다. 그러나 .NET은 Windows 세계에서 현재 가장 큰 문제이며 .NET 배경에서 Powershell을 배우는 것은 비교적 쉽습니다.

Powershell이 ​​잘못되었다고 생각하는 한 곳은 * nix 군중에게 호소하려고 노력하는 것입니다.

커맨드 라인 스위치 외에도 Powershell의 파이핑은 매우 다르며 실제로 픽업 할 때 가장 먼저 배워야합니다.

솔직히 말하면, 그것은 셸, 라 배쉬보다 스크립팅 언어, 라 펄과 훨씬 비슷합니다. 기본 쉘로 사용하려고하면 심각한 문제가 있습니다.

예를 들어 Powershell에서 간단한 SVN 덤프를 시도하십시오. stdout에서 이진 데이터를 잘 처리하지 못합니다. 반면 SVN 로그를 조작하는 것은 내장 된 xml 유형 덕분에 절대적인 꿈입니다.


별명은 신경 쓰지 않지만 구문에서 너무 많은 경우를 좋아하지 않습니다.
Job

@ Job : Powershell에 많은 문제가 있는데, 여기서 유일하게 적절한 것으로 보입니다. 그러나 Powershell에는 때때로 고통의 가치가 있기에 충분한 좋은 것들이 있습니다.
pdr

+1, VBScript를 사용하면 여러 가지 방법으로 셸 스크립팅 환경이 필요하지 않습니다.
Wyatt Barnett

또 다른 것은 일반적인 유닉스 IPC가 Windows에서 굉장히 느리고 서투른 것입니다. 파이프는 쓸모가 없습니다.
SK-logic

6

두 번째 병렬 Windows 도구 세트를 개발하는 데 필요한 것이 거의없고 고통도 많기 때문입니다.

쉘은 sed, find, xargs 등의 GNU 시스템에서 헬퍼 프로그램의 수와 기능을 통해 강력 해집니다. 이러한 도구를 다시 구현하는 것은 많은 작업이며 Windows 위에 POSIX 준수 계층을 구축하는 것이 훨씬 쉬워졌습니다. Cygwin은 이러한 POSIX 준수 계층으로, 셸 사용자가 Windows를 사용해야하는 경우 대부분의 요구를 충족시킵니다.

개인적으로 POSIX와 Linux 악대를 뛰어 넘지 않고 쉘 프로그래밍에 충분히 헌신적 인 개발자 커뮤니티는 너무 작아서 안정적인 쉘을 개발하는 데 20 년이 걸렸을 것입니다.


6

이것은 음모론을 무시하고 아마도 하나의 답이 없을 수도 있고 역사 학자들이 확실한 답을 찾지 않고 영원히 논쟁 할 수있는 종류의 질문들 중 하나입니다.

필자의 견해는 껍질의 힘이 즉시 명백하지 않다는 것입니다. Windows 3.1에서 프로그래밍을 시작했으며 셸을 거의 사용하지 않았습니다. 모든 것이 Visual C ++ IDE를 통해 수행되었으며 makefile을 보지 않았 으며 DOS 배치 파일이 너무 제한되어 배치 파일을 사용하여 기본 백업보다 복잡한 것을 자동화하는 경우는 거의 없었습니다. Windows 중심의 프로그래밍 책 ( Petzold에 대한 추억이 있습니다 )은 없었습니다. 리눅스를 사용하고 프로그래밍하기 시작하기 전까지는 강력한 쉘이 얼마나 유용한 지 알았습니다. Windows를 출시했을 때 이전 버전을 사용할 필요가 없었기 때문에 매우 흥미로 웠습니다.command.com더 이상 우리는 마침내 TSR 이 필요없는 하나 이상의 글꼴과 여러 프로그램이 동시에 실행되는 예쁜 인터페이스를 가졌습니다 ...

Windows에서 시작하는 대부분의 프로그래머는 강력한 셸에 대한 경험이 없으므로 Windows 용으로 구현해야 할 필요성이 없다고 생각합니다. 리눅스에서 일하고 쉘을 좋아하는 프로그래머는 리눅스에서 일하는 것을 선호하므로 특히 Windows를 위해 구현하기에 편하지 않은 환경에서 시간을 보내는 경향이 없다고 생각합니다. 다른 질문에서) 쉘과 함께 필요한 모든 CLI 도구도 구현해야합니다.

리눅스의 인기가 높아지는 것은 아마도 마이크로 소프트가 마침내 적절한 쉘을 넣은 주된 이유 일 것이다. 점점 더 많은 사람들이 쉘이 유용한 것이 무엇인지 깨달았 기 때문에 Windows에 중요한 툴이 없다는 것이 점점 더 분명 해졌다.


5

유닉스 쉘을 "괜찮은"것으로 생각 한다면 , 수십 년 동안 "괜찮은"Windows 용 쉘이 하나 이상 있습니다. 해밀턴 C 쉘은 합리적으로 가까운 유닉스 C 쉘합니다 (C 쉘은 유닉스에 특히 거대한 시장 침투를 한 적이 있습니다하지만)입니다. 꽤 많은 사람들이 JPSoft의 다양한 셸 (4DOS, 4NT, 현재 Take Command라고 함)을 꽤 오랫동안 사용했습니다. 이름에서 알 수 있듯이 4DOS는 MS-DOS 시대로 거슬러 올라갑니다.

15 년 전쯤에 Microsoft가 배포 한 쉘을 고집하는 경우 Windows NT Resource Kit은 PD Korn 쉘 1 의 NT 포트 와 많은 유닉스 유틸리티를 포함 시켰습니다. 수정하지 않고 많은 셸 스크립트를 실행하기에는 충분하지 않았지만 상당히 많은 양의 사용, 특히 약간의 대화식 작업을 처리하기에는 충분했습니다.


1 모든 정직에서, 나는 그것이 그것이 정확한 껍질의 포트인지, 또는 아주 비슷한 것임을 알지 못합니다-나는 그것이 유닉스 껍질을 기억했던 것처럼 성가신 것을 확인하기 위해 충분히 사용했습니다. .


우리가 여기서 "프로그래밍"쉘을 말하고 있기 때문에, "... 정당한 양의 남용 을 처리하기에 충분 했습니까?" :)
sbi

yay 4DOS-나는 리눅스와 유닉스로 전환하기 전에 4DOS로 자란 후에 MSFT의 기본 쉘을 사용해야했을 때 정말 혼란 스러웠다.
johannes

5

Windows에는 스크립팅에 적합하지 않은 디자인 기능이 있습니다. 그래픽 인터페이스를 기본 작동 모드로 설정 한 결과입니다. 많은 도구에는 기능적인 명령 행 인터페이스가 없습니다. 적절한 명령 행 인터페이스가 없으면 좋은 쉘을 생성하기가 매우 어렵습니다.

Windows에서 스크립팅해야하는 작업은 종종 응용 프로그램 창의 여러 위치에서 마우스 클릭과 키 입력을 시뮬레이션해야합니다. 결과 스크립트는 매우 취약 할 수 있습니다. 관련 지오메트리를 쉽게 사용할 수 없으므로 명령 언어로 스크립트를 작성하는 위치를 설명하는 것은 쉬운 일이 아닙니다.

초기 버전에는 Windows에도 기능적인 배관 메커니즘이 없었습니다. 설명 된대로 첫 번째 프로세스가 실행되고 해당 출력이 임시 파일에 저장됩니다. 이 파일은 다음 명령의 입력으로 사용됩니다. 디스크를 많이 사용하며 충분한 임시 공간을 사용할 수 없으면 실패합니다. 유닉스 파이프는 메모리의 데이터를 전달하고 지연을 최소화하는 방식으로 프로세스를 예약합니다.


1

1993 년에 시작된 Windows NT는 MS가 이전에 Unix 서버가 차지했던 공간으로 이동 한 시점에서 POSIX 호환성과 이식성에 대해 큰 문제가있었습니다. 그러나 그 일을하지는 못했습니다. 대신 사용자는 더 나은 하드웨어를 사용하여 데스크탑 군중이 더 많았습니다 (32MB RAM이있는 486dx 50MHz가 최고에 가까웠 던 시절). 더 나은 OS를 원했습니다. 그러나 그들은 껍질에 관심이 없었기 때문에 모두 미끄러졌습니다. 이 시장을 크랙하기위한 두 번째 심각한 시도 인 Windows Server 2000 당시에는 관리자가 쉘 스크립트를 좋아하기 때문에 MS가 쉘 측면에서 약하다는 것을 깨달았지만 가려움을 긁는 데 시간이 걸렸습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.