Có vẻ như bạn đã không làm điều đó một cách chính xác.
Tôi nghi ngờ bạn đang cố gắng làm điều thứ ba nhưng sử dụng cú pháp sai. Năm lỗi phổ biến có thể tạo ra lỗi như những gì bạn đang thấy là:
Sử dụng không gian thay vì =
. export NAME value
là không chính xác; value
sau đó được hiểu là tên của một biến tiếp theo cần xuất.
(Điều này xảy ra vì export NAME1 NAME2
là cú pháp đúng để xuất nhiều biến.)
Đặt không gian xung quanh =
. Trong nhiều ngôn ngữ lập trình, hầu hết thời gian đều hợp lệ và được ưa thích đối với các nhà khai thác pad với không gian. Nhưng để gán giá trị cho một biến trong tập lệnh shell (hoặc tình huống khác nơi bạn đang phát lệnh shell), điều này không được phép. NAME = value
(trong một export
lệnh hoặc cách khác) sẽ không hoạt động; bạn phải sử dụng NAME=value
.
( export NAME = value
cố gắng xuất các biến có tên NAME
, =
và value
. May mắn thay, điều này dường như không bao giờ thành công trong âm thầm vì cố gắng xuất một biến được gọi =
là lỗi cú pháp. Ngược lại export NAME= value
sẽ xuất hiện để hoạt động, nhưng không gán value
cho NAME
--instead, nó gán trống, Chuỗi có độ dài bằng không NAME
và xuất nó và xuất riêng biến value
. Cả hai đều là những lỗi phổ biến.)
Tách các phần của giá trị của biến với khoảng trắng. Biến môi trường có thể chứa khoảng trắng, nhưng trong thực tế, chúng hiếm khi được sử dụng làm dấu tách trường trong biến môi trường. Khi một biến duy nhất cố ý chứa nhiều đường dẫn, thường :
được sử dụng để phân tách chúng.
Không trích dẫn khoảng trắng khi gán cho biến. Đôi khi, giá trị của biến môi trường được cho là chứa khoảng trắng. Ví dụ, nó có thể là tên của một thư mục thực sự chứa một khoảng trắng. Trong trường hợp đó, cần trích dẫn bất kỳ khoảng trắng nào.
Một cách để làm điều này là đi trước họ với \
. Xem Làm thế nào tôi có thể bảo vệ dấu ngoặc đơn được truyền cho lệnh cd? và Không thể xóa tệp để biết thông tin theo các cách khác - các phương pháp được trình bày trong câu trả lời được áp dụng, mặc dù không có câu hỏi nào cụ thể về việc gán cho các biến môi trường.
Ví dụ, đây là một vài cách để xuất biến môi trường SILLYPATH
với giá trị /home/ek/silly name/bin
:
export SILLYPATH=/home/ek/silly\ name/bin
export SILLYPATH='/home/ek/silly name/bin'
export SILLYPATH="/home/ek/silly name/bin"
Thông thường khi một thư mục mà bạn phải sử dụng trong shell hoặc gán cho biến môi trường được sử dụng rộng rãi có chứa một khoảng trắng, nó có thể được lợi từ việc đổi tên. (Nhưng đôi khi điều đó không thực tế hoặc không mong muốn.)
Chỉ định và / hoặc xuất một biến khi không có gì phải làm cả. Đây là một loại sai lầm meta; vấn đề kỹ thuật cụ thể thường là một trong những vấn đề trên, nhưng giải pháp là loại bỏ đường dây vi phạm, hoặc một phần của nó, thay vì khắc phục nó. Tất nhiên, đừng loại bỏ mã một cách bừa bãi .bashrc
. Nhưng một cái export
có thể đã vô tình được thêm vào, hoặc có thể vô tình có nhiều mã trong đó hơn dự định. Ví dụ: giả sử bạn muốn viết:
echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
Điều đó sẽ nối vào .bashrc
, sau đó lấy lại nguồn. Nhưng giả sử thay vì bạn đã viết:
echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
Sau đó, export
lệnh của bạn sẽ không chỉ xuất một giá trị tăng thêm PATH
, mà còn cố gắng xuất các biến có tên .
và , đó không phải là điều bạn muốn. Vì chúng chứa các ký tự bị cấm trong các tên biến, do đó bạn sẽ gặp lỗi mỗi khi bạn bắt đầu một bash shell tương tác mới./home/your-username/.bashrc
Để tránh vấn đề này, tôi khuyên bạn nên chỉnh sửa .bashrc
trong một biên tập viên (ví dụ nano ~/.bashrc
, gedit ~/.bashrc
) chứ không phải là chuyển hướng đầu ra đến phần cuối của nó với >>
.