ละเว้นตัวแปรจากเชลล์อื่น


0

ฉันอยู่บนเวิร์กสเตชันลินุกซ์ในเครือข่ายโดยมีการแจกจ่าย "เก่า" นอกจากนี้ล็อกอินเชลล์ถูกบังคับใช้กับ CSH ฉันถามผู้ดูแลระบบแล้วว่าเป็นไปได้หรือไม่ที่จะเปลี่ยนไปใช้อันอื่น (ฉันต้องการทุบตี) แต่เป็นไปไม่ได้ ...

ดังนั้นฉันกำลังรัน bash จากบรรทัดคำสั่งเป็นเชลล์ที่ไม่ใช่การเข้าสู่ระบบแบบโต้ตอบ (จริงๆแล้วฉันใช้ gnome และ gnome-terminal กับโปรไฟล์ที่รัน / bin / bash -i เป็นคำสั่ง) มากถ้าไม่ใช่สคริปต์ของฉันทั้งหมดใช้ bash ดังนั้นฉันจึงเรียกใช้จากมันเพื่อเรียกใช้ bash ด้วยสคริปต์ มันยุ่ง แต่ก็ใช้งานได้

ฉันมี. cshrc พร้อมกับตัวแปรสภาพแวดล้อม, นามแฝงและตัวเลือกสำหรับ csh ที่กำหนดในไฟล์. logi และ. csrc ใน $ HOME ของฉัน ฉันยังมี. bashrc / .bash_profile (ที่เปลี่ยนเส้นทางไปยัง. bashrc หากนี่เป็นเชลล์แบบโต้ตอบ) /. bash_aliases พร้อมกับตัวแปรอื่น ๆ และบางอย่างนั้นเหมือนกัน เมื่อฉันรัน bash shell ฉันสืบทอดมาจากตัวแปรสภาพแวดล้อมที่กำหนดไว้ในไฟล์. log ของฉัน ฉันต้องการละเว้นทุกสิ่งที่ตั้งค่าไว้ในอันนี้เมื่อฉันเรียกใช้ทุบตี

ฉันต้องการทราบว่ามีตัวเลือกในการรัน bash หรือไม่โดยไม่สนใจตัวแปรสภาพแวดล้อมอื่น ๆ ทั้งหมดที่กำหนดไว้ก่อนหน้านี้จากเซสชันการเข้าสู่ระบบ CSH ของฉันเมื่อฉันเรียกใช้เชลล์ BASH ของฉัน

คุณมีความคิดใด ๆ

ขอขอบคุณ

คำตอบ:


2

แทนที่จะตั้งค่าตัวแปรด้วยตนเองที่คุณไม่ต้องการสืบทอดให้รัน bash โดยใช้envคำสั่ง:

env -i bash

การ-iตั้งค่าสถานะทำให้bashละเว้นสภาพแวดล้อมที่สืบทอด


นั่นคือสิ่งที่ฉันกำลังมองหา! ขอบคุณ!
Marc-Olivier Titeux

0

คุณต้องการรัน bash เป็นเชลล์แบบไม่โต้ตอบภายใน CSH โดยมีตัวแปร bash ที่กำหนดใน. bash_profile ใช่ไหม?

คุณสามารถยิงได้:

./bash --login
source ./bash --login

แต่ฉันไม่สามารถทดสอบได้


ขอบคุณสำหรับคำตอบ. มันไม่ได้ทำสิ่งที่ฉันต้องการเช่นกัน: setenv $ PLOUC "PLOUZ" ที่กำหนดใน. csrc ยังให้ฉัน PLOUZ เมื่อฉันทำเสียงก้อง $ PLOUC หลังจาก / bin / bash --login
Marc-Olivier Titeux

ดังนั้นหลังจาก./bash --loginดำเนินการนี้source .bash_profile
okobaka

ผลลัพธ์เดียวกันขออภัย ...
Marc-Olivier Titeux

ทุบตีตัวเองจะได้รับมรดก var man bashจากสภาพแวดล้อมที่ได้รับการดำเนินการจากมองหาสวิทช์ที่เหมาะสมในการ หากคุณต้องการลบตัวแปรออกจากสภาพแวดล้อมเพียงแค่unset VARNAME1 VARNAME2นั้น
okobaka

1
พิมพ์พวกเขาทั้งหมด: env | awk -F= '/^\w/ {print $1}' | xargsจากนั้นนำสิ่งที่สำคัญออกแล้วยกเลิกการตั้งค่า
okobaka
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.