Điều gì gây ra tất cả các dòng khai báo -x này khi tôi mở một thiết bị đầu cuối?


15

Khi tôi mở một thiết bị đầu cuối trên máy Fedora của mình (hoặc ssh vào nó), tôi nhận được một loạt các dòng như thế này trước dấu nhắc:

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

Điều gì gây ra điều này? Điều này có thể xảy ra sau khi tôi chỉnh sửa .bashrc, nhưng tôi tin rằng tất cả những gì tôi đã thay đổi là thêm một đường dẫn thư mục khác vào "PATH =".

Cập nhật (ứng phó với heavyd câu trả lời 's): Tôi grep'ed ~/.bashrc, ~/.bash_profile/etc/bashrccho 'khai báo' và tìm thấy gì cả.

Tôi nhìn vào /etc/bashrc~/.bashrccó chứa những điều sau đây:

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

Tôi không thấy bất cứ điều gì trong các tập lệnh ~/.bashrchoặc ~/.bash_profilengoại trừ đoạn mã trên, "PATH =,", "xuất ra" và "bí danh".

Khi tôi chạy .bashrctập lệnh của mình (sử dụng " bash ~/.bashrc") hoặc .bash_profiletập lệnh, tôi thấy danh sách "khai báo", nhưng không có thông báo lỗi. (Tôi không thấy gì nếu tôi chạy /etc/bashrc.)

~./bash_profile rất đơn giản:

# .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

Đã giải quyết : Cảm ơn andrew.n , đề xuất của bạn đã giúp tôi theo dõi nó. Hóa ra tất cả các dòng "khai báo -x" đều là đầu ra nếu một dòng chạy export(và chính nó) và tôi đã vô tình chèn CR vào giữa "xuất" và "PATH = Lỗi" trong tôi .bashrc.


tìm trong /etc/profile.d/
freiheit

Tôi nên tìm gì trong /etc/profile.d/? Tất cả những tập tin đó là gì? (Có lẽ tôi nên tạo một câu hỏi mới về nó.)
Daryl Spitzer

Cảm ơn. Trong trường hợp của tôi, đó là CR giữa xuất và PATH quá :)
khai báo

Câu trả lời:


8

Chạy

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

để khởi động bash trong chế độ dài dòng. Điều này sẽ in mọi dòng của tệp khởi tạo khi nó được đọc và mỗi dòng tệp khởi tạo khi nó được thực thi, sao chép đầu ra vào một tệp được gọi foo. Sau đó, bạn có thể nhìn vào foođể xem những gì gây ra declare -xđược gọi.


6

Đã tìm ra rằng rất nhiều declare ...báo cáo là kết quả của sau khi exportđược chạy ở đâu đó mà không có một cuộc tranh cãi.

Tôi tìm thấy một dòng mới tình cờ trong .bashrc:

export
VARIABLE=value

Mà nên có

export VARIABLE=value

Đúng. Đây là câu trả lời chính xác. Nếu bạn tự nhập "xuất" trong thiết bị đầu cuối của mình, bạn sẽ thấy đầu ra -x khai báo tương tự được hiển thị.
Sterling Bourne

Vâng, điều này áp dụng cho tôi! Tôi vô tình đưa nội dung xuất khẩu vào dòng mới tiếp theo. Tôi đặt chúng trong cùng một dòng và nó hoạt động.
fanchyna

3

Có, có khả năng nó đến từ .bashrc của bạn vì bạn đã chỉnh sửa nó. Bạn có thể đã đưa ra một lỗi cú pháp trong tập lệnh có thể gây ra lỗi đó.

Bạn có thể đảm bảo rằng những dòng này tồn tại trong .bashrc của bạn bằng cách nhập:

grep declare ~/.bashrc

Bạn sẽ thấy ít nhất 4 dòng đó được in ra bàn điều khiển. Bạn cũng có thể thử chạy tập lệnh .bashrc của mình từ dấu nhắc và xem có lỗi nào xảy ra không:

bash ~/.bashrc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.