Không phải là một định danh hợp lệ, khi tôi làm xuất khẩu $ PATH


37

Khi tôi chạy export $PATHtrong bash, tôi nhận được lỗi not a valid identifier. Tại sao?


8
Trong bash và các shell khác, $là giá trị của Expedia. Bạn đang xuất biến PATH, không truy cập giá trị của nó, vì vậy nó export PATHkhông có $.
Gilles 'SO- ngừng trở nên xấu xa'

Một vấn đề tương tự phổ biến hơn: Askubfox.com/questions/529919/ mẹo
Vadzim

Câu trả lời:


40

Chạy export $PATHsẽ cố gắng xuất một biến có tên bằng giá trị của $PATH(sau khi tách từ ). Đó là, nó tương đương với việc viết một cái gì đó như export /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin. Và vì /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binkhông phải là một tên biến hợp lệ, nó thất bại. Những gì bạn muốn làm là export PATH.

export(tương đương với declare -x) trong Bash chỉ đơn giản là làm cho biến có sẵn cho các lớp con.

Để in giá trị của biến một cách an toàn và dễ đọc, hãy sử dụng printf %q "$PATH".


Về cơ bản, tôi đã tạo một số biến, JAVA_HOME, MAVEN_HOME và muốn đảm bảo rằng bash đã đặt đúng chúng, vì vậy tôi xuất $ PATH để xem các biến đường dẫn đã được đặt đúng cho biến PATH
ThaSaleni

1
Đây là phụ thuộc shell, không phụ thuộc hệ điều hành. Tôi sẽ ngạc nhiên nếu exporttừng làm việc như thế ở Bash.
l0b0

Ngoài ra, biến PATH đã được xuất và không cần xuất lại.
Kusalananda

19

Lệnh sau export $PATH=somePathsẽ trả về not a valid identifiervà đó là do $trước PATHbiến.

dung dịch:

export PATH=somePath


0

Bạn nên sử dụng nó theo cách này:

export PATH=$PATH:/something/bin

Thay vì:

export $PATH=$PATH:/something/bin

chỉ cần loại bỏ các $dấu hiệu từ phía bên tay trái.


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.