อะไรเป็นสาเหตุของเส้น "ประกาศ -x ... " เหล่านี้ทั้งหมดเมื่อฉันเปิดเทอร์มินัล


15

เมื่อฉันเปิดเทอร์มินัลในเครื่อง Fedora ของฉัน (หรือ ssh ลงไป) ฉันจะได้รับข้อความแบบนี้ก่อนหน้าพรอมต์:

declare -x CVS_RSH="ssh"
declare -x DISPLAY="localhost:10.0"
declare -x G_BROKEN_FILENAMES="1"
declare -x HISTSIZE="1000"
…

อะไรทำให้เกิดสิ่งนี้ สิ่งนี้อาจเกิดขึ้นหลังจากที่ฉันแก้ไข.bashrcแต่ฉันเชื่อว่าสิ่งที่ฉันเปลี่ยนทั้งหมดคือการเพิ่มเส้นทางไดเรกทอรีอื่นไปที่ "PATH ="

ปรับปรุง (การตอบสนองต่อheavyd 's คำตอบ): ผม grep'ed ~/.bashrc, ~/.bash_profileและ/etc/bashrcสำหรับ 'ประกาศ' และพบว่าไม่มีอะไร

ฉันดู/etc/bashrcเพราะ~/.bashrcมีสิ่งต่อไปนี้:

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

ฉันไม่เห็นอะไรเลยใน~/.bashrcหรือ~/.bash_profileสคริปต์ยกเว้นโค้ดด้านบน "PATH = …", "export ... " และ "alias ... "

เมื่อฉันเรียกใช้.bashrcสคริปต์ของฉัน(ใช้ " bash ~/.bashrc") หรือ.bash_profileสคริปต์ฉันเห็นรายการ "ประกาศ" แต่ไม่มีข้อความแสดงข้อผิดพลาด (ฉันไม่เห็นอะไรเลยถ้าฉันวิ่ง/etc/bashrc)

~./bash_profile ง่ายมาก:

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

แก้ไขแล้ว : ขอบคุณandrew.nข้อเสนอแนะของคุณช่วยฉันติดตามมัน มันจะเปิดออกทุกคน "ประกาศ -x ..." สายจะออกหากวิ่งexport(ด้วยตัวเอง) และฉันได้แทรกตั้งใจ CR ในระหว่าง "ส่งออก" และ "เส้นทาง = ..." .bashrcในของฉัน


ดูใน
/etc/profile.d/

ฉันควรมองหาอะไรใน /etc/profile.d/ ไฟล์เหล่านั้นคืออะไร? (บางทีฉันควรสร้างคำถามใหม่เกี่ยวกับมัน.)
ดาริลสปิตเซอร์

ขอบคุณ ในกรณีของฉันมันเป็น CR ระหว่างการส่งออกและเส้นทางมากเกินไป :)
Marlar

คำตอบ:


8

วิ่ง

env - HOME="$HOME" /bin/bash --login -xv 2>&1 | tee foo

เพื่อเริ่มต้นทุบตีในโหมด verbose fooนี้จะพิมพ์บรรทัดของแฟ้มเริ่มต้นทุกอย่างที่มันจะถูกอ่านและสายของไฟล์เริ่มต้นทุกอย่างที่มันจะถูกดำเนินการคัดลอกออกไปยังไฟล์ที่เรียกว่า จากนั้นคุณสามารถดูfooเพื่อดูสิ่งที่ทำให้เกิดdeclare -xการเรียก


6

คิดออกว่าdeclare ...งบจำนวนมากเป็นผลมาจากการexportถูกเรียกใช้ที่ไหนสักแห่งโดยไม่มีการโต้แย้ง

ฉันพบบรรทัดใหม่จากอุบัติเหตุของฉัน.bashrc:

export
VARIABLE=value

ซึ่งควรจะได้รับ

export VARIABLE=value

ใช่. นี่คือคำตอบที่ถูกต้อง หากคุณพิมพ์ "ส่งออก" ด้วยตัวเองใน terminal ของคุณคุณจะเห็นประกาศ -x แสดงผลเดียวกัน
Sterling Bourne

ใช่สิ่งนี้ใช้ได้กับฉัน! ฉันตั้งใจใส่เนื้อหาของการส่งออกในบรรทัดใหม่ถัดไป ฉันใส่ไว้ในบรรทัดเดียวกันและใช้งานได้
fanchyna

3

ใช่เป็นไปได้ว่ามันมาจาก. bashrc ของคุณเพราะคุณแก้ไขมัน คุณอาจมีข้อผิดพลาดทางไวยากรณ์ในสคริปต์ซึ่งอาจทำให้เกิดผลลัพธ์

คุณสามารถตรวจสอบให้แน่ใจว่าบรรทัดเหล่านี้มีอยู่ใน. bashrc ของคุณโดยพิมพ์:

grep declare ~/.bashrc

คุณควรเห็นอย่างน้อย 4 บรรทัดที่พิมพ์ออกไปยังคอนโซล คุณยังสามารถลองเรียกใช้สคริปต์. bashrc ของคุณจากพรอมต์และดูว่ามีข้อผิดพลาดเกิดขึ้นหรือไม่:

bash ~/.bashrc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.