내가 파워셸인지 cmd인지 어떻게 판단합니까?
Windows에서 OpenSSH를 사용하고 있는데 일반적인 Unix 별칭이 없어진 것 같습니다.SSH를 통해 Windows 컴퓨터에 로그인할 때 powershell이 시작되는지 cmd가 시작되는지 확신할 수 없습니다.Windows에서 현재 실행 중인 셸을 확인하는 올바른 방법은 무엇입니까?
모든 크레딧은 PetSerAl에게 제공되며, 이는 답변으로 게시되어야 했습니다.
(dir 2>&1 *`|echo CMD);&<# rem #>echo PowerShell
이내에Win32-OpenSSH
이 명령은 또한 작동하고 출력합니다.CMD
.
NB:Win32-OpenSSH
좀 제한적인 것 같은데요cd
내 시스템에서 인식되지 않습니다.
powershell(powershell.exe)을 사용하는 것도 구별하기 위해 @sodawillow의 답변을 확장하고자 합니다.Desktop
및 PWSH(pwsh.exe)로 알려진Core
.
(dir 2>&1 *`|echo CMD);&<# rem #>echo ($PSVersionTable).PSEdition
# Returns one of: CMD, Core, Desktop
이것은 하위 셸이 인스턴스화되지 않은 모든 경우에 적용됩니다.이것은 Python에서 기본 하위 프로세스를 여는 것으로부터 작동하지 않는다는 것을 의미합니다. 창과 상호 작용할 때 항상 CMD를 사용하기 때문입니다.Windows 환경 변수에 의해 실제로 설정됩니다.ComSpec
항상 가리키며C:\Windows\system32\cmd.exe
.
예를 들어,
(pwsh 셸에서 python 인터프리터 시작)
>>> import os, subprocess
>>> c="(dir 2>&1 *`|echo CMD);&<# rem #>echo($PSVersionTable).PSEdition"
>>> subprocess.call(c,shell=True)
CMD
다른 Python shell detection scheme에 대해서는 이 좋은 게시물을 참고하시기 바랍니다.
업데이트 : 2020-05-01
저는 그럭저럭 위의 작업을 할 수 있었지만, 실행하기 전에 항상 파워셸 프로파일을 로드하는 불쾌한 부작용이 있었습니다.그 비결은 다음과 같이 명시하는 것이었습니다.execute=<path-to-powershell-exe>
다음과 같이:
(Python CLI를 시작합니다.)
import os, subprocess
c="(dir 2>&1 *`|echo CMD);&<# rem #>echo($PSVersionTable).PSEdition"
e="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
subprocess.call(c, shell=True, executable=e)
# output:
# <blah blah from profile>
# Desktop
# 0
파워셸 프로필 문제를 피하지 못했습니다.하지만 분명히 그것은 작업중인 것입니다.여기서 여기서 보세요.
언급URL : https://stackoverflow.com/questions/34471956/how-to-determine-if-im-in-powershell-or-cmd
'programing' 카테고리의 다른 글
PowerShell에서 "배치 작업 종료(Y/N)" 확인을 억제하려면 어떻게 해야 합니까? (0) | 2023.10.27 |
---|---|
Python+를 사용하여 MySQL 데이터베이스를 연결하는 방법원격으로 SQL Lchemy? (0) | 2023.10.27 |
트래비스가 도커 컨테이너를 구축하는 동안 phpunit 테스트를 실행하려면 어떻게 해야 합니까? (0) | 2023.10.27 |
Apache2를 통해 연결하는 동안에만 원격 MySqli Connection 시간 초과 (0) | 2023.10.27 |
"pre_option_upload_url_path" WordPress 4.7에서 필터가 더 이상 점화되지 않습니다. (0) | 2023.10.27 |