คำตอบของ jordanmไม่ถูกต้อง /etc/profileไม่ได้มาจากเปลือกหอยทั้งหมด ในขณะที่คุณชี้ให้เห็นก็ไม่ได้มาจากcsh, tcsh- zshฉันไม่แน่ใจเกี่ยวกับ มันมาจากบอร์นเชลล์ ( sh) อนุพันธ์เช่น Korn Shell ( ksh) และ BASH ( bash) การใช้งานcsh /etc/loginผู้ที่มีแนวโน้มที่จะใช้อนุพันธ์ Borne Shell โดยเฉพาะมีแนวโน้มที่จะลืมเชลล์อื่น ๆ พวกเขาเพิ่มสิ่งที่/etc/profileคาดหวังว่ามันจะนำไปใช้กับ "ผู้ใช้ทุกคน" แล้วจะประหลาดใจเมื่อผู้ใช้คี่ซีเชลล์ (และเราเป็นจำนวนมากคี่) /etc/profileไม่ได้มีสิ่งที่พวกเขากำหนดค่าใน
ถึงกระนั้นผู้คนก็มักจะลืมเกี่ยวกับเปลือกหอยชนิดอื่นที่มีอยู่ หากพวกเขาใช้bashหรือkshพวกเขารู้สึกอิสระที่จะเพิ่มไวยากรณ์ให้กับ/etc/profileที่ไม่ถูกต้องใน Bourne Shell เช่นพูดว่าการกำหนดตัวแปรและส่งออกมันในบรรทัดเดียวกัน จากนั้นคุณจะได้รับสคริปต์บางอย่างที่ทำ#!/bin/shและมันจะทำให้เกิดปัญหากับไวยากรณ์ /etc/profileควรติดกับไวยากรณ์ที่เข้ากันได้ของ Bourne Shell
ในทำนองเดียวกันคุณควรติดมันด้วยตัวคุณเอง.profile(ใช้.bash_profileถ้าคุณต้องการไวยากรณ์ของ bash) - มันอาจจะพิมพ์เพิ่มเติมเล็กน้อย แต่มันเป็นแบบพิเศษที่คุณทำทุกครั้ง การอ้างอิง${HOME}และไม่~ฯลฯ รสชาติบางอย่างของ Unix, งาน cron ทำงานภายใต้sh, แต่ละบรรทัดของคุณMakefileจะถูกประมวลผลโดยsh, ดังนั้นหากคุณกำลังทำงานกับ UNIX หลายรสชาติ, มันจ่ายเพื่อให้.profileบอร์นเชลล์ของคุณทำงานได้จริง ในฐานะผู้ดูแลระบบฉันไม่สามารถบอกคุณได้ว่ามีกี่ครั้งที่ฉันได้ช่วยคนอื่นโดยแก้ไข.profileให้เข้ากับ Bourne Shell ได้
บน Linux /bin/shเป็นลิงค์ไปยัง/bin/bashและเมื่อคุณเรียกใช้มันจะมีลักษณะเส้นทางที่ใช้ในการเรียกใช้และ (ตามทฤษฎี) จำกัด ตัวเองกับสิ่งที่ Bourne Shell สนับสนุนเท่านั้น ในทำนองเดียวกันviบน Linux ก็vimจำกัด ตัวเองอีกครั้ง บางครั้งคุณจะเห็นคุณสมบัติ "ตกเลือด" บางครั้งการvimแกล้งviทำจะทำสิ่งที่vimสนับสนุนซึ่งviไม่ได้เป็นเพราะผู้เขียนvimลืมที่จะปิดการใช้งานในโหมด "vi ย้อนหลังเข้ากันได้" ฉันจะไม่แปลกใจถ้าbashเสแสร้งว่าshมีฟีเจอร์ "Bleed through" ที่คล้ายกัน คงจะไม่แปลกใจหากฟีเจอร์ "ทำงานบน Borne Shell บน Linux" แต่ไม่ได้อยู่ในระบบ V หรือ BSD ที่ใช้ UNIX (AIX, OpenBSD, ฯลฯ )
Does it have positive ... and understood.คุณพยายามจะพูดอะไรที่นี่? ฉันเข้าใจทุกอย่างนอกเหนือจากวรรคนั้น