ฉันเดาว่าคุณมาจากพื้นหลังของหน้าต่าง ดังนั้นฉันจะตัดกันพวกเขา (ฉันยังใหม่กับ linux ด้วย) ฉันพบว่าการตอบกลับของผู้ใช้สำหรับความคิดเห็นของฉันเป็นประโยชน์ในการค้นหาสิ่งต่างๆ
ใน Windows ตัวแปรอาจเป็นแบบถาวรหรือไม่ก็ได้ คำว่าตัวแปรสภาพแวดล้อมรวมถึงชุดตัวแปรในเชลล์ cmd ด้วยคำสั่ง SET เช่นเดียวกับเมื่อตัวแปรถูกตั้งค่าภายใน Windows GUI จึงตั้งค่าในรีจิสทรีและสามารถดูได้ในหน้าต่าง cmd ใหม่ เช่นเอกสารประกอบคำสั่ง set ใน windows https://technet.microsoft.com/en-us/library/bb490998.aspx "แสดงตั้งค่าหรือลบตัวแปรสภาพแวดล้อมใช้โดยไม่มีพารามิเตอร์ set จะแสดงการตั้งค่าสภาพแวดล้อมปัจจุบัน" ใน Linux set ไม่แสดงตัวแปรสภาพแวดล้อมโดยจะแสดงตัวแปรเชลล์ซึ่งไม่เรียก / อ้างถึงว่าเป็นตัวแปรสภาพแวดล้อม นอกจากนี้ Linux ไม่ได้ใช้ set เพื่อตั้งค่าตัวแปร (นอกเหนือจากพารามิเตอร์ตำแหน่งและตัวเลือกเชลล์ซึ่งฉันอธิบายเป็นหมายเหตุในตอนท้าย) เพียงเพื่อแสดงตัวแปรเหล่านี้และแม้กระทั่งเพื่อแสดงตัวแปรเชลล์เท่านั้น Windows ใช้ set สำหรับการตั้งค่าและแสดงเช่น set a = 5, linux ไม่ได้
ใน Linux ฉันเดาว่าคุณสามารถสร้างสคริปต์ที่ตั้งค่าตัวแปรในการบูตได้เช่น/etc/profile
หรือ/etc/.bashrc
แต่อย่างอื่นมันจะไม่ถาวร เก็บไว้ในแรม
ลินุกซ์มีความแตกต่างระหว่างตัวแปรเชลล์และตัวแปรสภาพแวดล้อม ใน Linux ตัวแปรเชลล์จะอยู่ในเชลล์ปัจจุบันเท่านั้นและตัวแปรสภาพแวดล้อมจะอยู่ในเชลล์นั้นและเชลล์ลูกทั้งหมด
คุณสามารถดูตัวแปรเชลล์ด้วยset
คำสั่ง (โปรดทราบว่าไม่เหมือน windows ตัวแปรไม่ได้ถูกตั้งค่าใน linux ด้วยคำสั่ง set)
set -o posix; set
(ทำ set -o posix ครั้งแรกช่วยไม่ให้แสดงสิ่งที่ไม่จำเป็นมากเกินไป) ดังนั้นset
แสดงตัวแปรเชลล์
คุณสามารถดูตัวแปรสภาพแวดล้อมด้วยenv
คำสั่ง
ตัวแปรเชลล์ถูกตั้งค่าด้วยเช่น just a = 5
ตัวแปรสภาพแวดล้อมถูกตั้งค่าด้วยการส่งออกการส่งออกยังตั้งค่าตัวแปรเชลล์
ที่นี่คุณจะเห็นตัวแปรเชลล์ zzz ที่ตั้งค่าด้วย zzz = 5 และเห็นว่ามันแสดงเมื่อทำงานset
แต่ไม่แสดงเป็นตัวแปรสภาพแวดล้อม
ที่นี่เราเห็น yyy ตั้งค่าด้วยการส่งออกดังนั้นจึงเป็นตัวแปรสภาพแวดล้อม และดูว่ามันแสดงภายใต้ตัวแปรเชลล์และตัวแปรสภาพแวดล้อม
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
เธรดที่มีประโยชน์อื่น ๆ
/unix/176001/how-can-i-list-all-shell-variables
/ubuntu/26318/environment-variable-vs-shell-variable-whats-the-difference
หมายเหตุ - จุดหนึ่งที่อธิบายรายละเอียดเล็กน้อยและค่อนข้างถูกต้องกับสิ่งที่ฉันเขียนไว้คือใน linux bash สามารถใช้ "set" เพื่อตั้งค่า "positional parameters" และ "shell options / attributes" และในทางเทคนิคทั้งสองอย่าง สิ่งเหล่านี้เป็นตัวแปรแม้ว่า man page อาจไม่ได้อธิบายว่าเป็นเช่นนั้น แต่ตามที่กล่าวไว้ set จะไม่ตั้งค่าตัวแปรเชลล์หรือตัวแปรสภาพแวดล้อม) หากคุณทำเช่น set asdf
นั้นจะตั้งค่า $ 1 เป็น asdf และหากecho $1
คุณเห็น asdf ถ้าคุณทำset a=5
จะไม่ตั้งค่าตัวแปร a เท่ากับ 5 มันจะตั้งค่าพารามิเตอร์ตำแหน่ง $ 1 เท่ากับสตริงของ "a = 5" ดังนั้นหากคุณเคยเห็น set a = 5 ใน linux อาจเป็นความผิดพลาดเว้นแต่จะมีใครต้องการสตริงนั้น a = 5 ใน $ 1 สิ่งอื่น ๆ ที่ชุดของ linux สามารถตั้งค่าได้คือ shell options / attributes ถ้าคุณตั้งค่า -o คุณจะเห็นรายการของพวกเขา และคุณสามารถทำได้ตัวอย่างเช่นset -o verbose
ปิดเพื่อเปิดใช้งาน verbose (btw ค่าเริ่มต้นเกิดขึ้นเพื่อปิด แต่ไม่ได้สร้างความแตกต่างกับสิ่งนี้) หรือset +o verbose
จะปิด verbose ก็ได้ Windows ไม่มีการใช้งานดังกล่าวสำหรับคำสั่ง set