¿Alguna razón por la que se omitió $
Esto falta tanto en Linux como en MacOS PSCore6.
Ejecute el siguiente comando en Linux o MacOS PSCore y falta la variable.
dir env:
Esta variable $ env: PROCESSOR_ARCHITECTURE para existir
No se proporciona en sistemas operativos que no son Windows.
CentOS:
PS /home/maxt> cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
Mac OS:
Maximos-Mac:~ maxt$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.4
BuildVersion: 17E199
#CentOS
PS /home/maxt> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.0-preview.2
PSEdition Core
GitCommitId v6.1.0-preview.2
OS Linux 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
#MacOS
PS /Users/maxt> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.0-preview.2
PSEdition Core
GitCommitId v6.1.0-preview.2
OS Darwin 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST 2018; root:xnu-45...
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Creo que, al ser una variable de entorno, PowerShell no controla la existencia de esa configuración. Es el sistema operativo host el que establece PROCESSOR_ARCHITECTURE
en el entorno, y ha habido una preferencia general por PowerShell de no establecer nuevas variables de entorno (especialmente porque esto potencialmente rompe las cosas).
Para que quede claro, vaya a cmd.exe
en Windows y escriba echo %PROCESSOR_ARCHITECTURE%
y debería ver el valor. Vaya a bash
en UNIX y escriba echo $PROCESSOR_ARCHITECTURE
y no obtendrá nada por defecto. PowerShell tiene como objetivo hacer lo mismo en cada plataforma respectiva.
En aras de la integridad, en UNIX debería poder usar uname -m
(creo que $PSVersionTable
usa esto para OS
). Creo que podría haber habido alguna discusión acerca de que PowerShell también tiene una variable interna para rastrear la arquitectura del procesador.
¡¡Gracias a todos!!
:)
Comentario más útil
Creo que, al ser una variable de entorno, PowerShell no controla la existencia de esa configuración. Es el sistema operativo host el que establece
PROCESSOR_ARCHITECTURE
en el entorno, y ha habido una preferencia general por PowerShell de no establecer nuevas variables de entorno (especialmente porque esto potencialmente rompe las cosas).Para que quede claro, vaya a
cmd.exe
en Windows y escribaecho %PROCESSOR_ARCHITECTURE%
y debería ver el valor. Vaya abash
en UNIX y escribaecho $PROCESSOR_ARCHITECTURE
y no obtendrá nada por defecto. PowerShell tiene como objetivo hacer lo mismo en cada plataforma respectiva.