Dòng đó trong bạn .profile
nên là một trong
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
Ký ~
tự chỉ được mở rộng vào thư mục chính của bạn khi đó là ký tự đầu tiên của từ và nó không được trích dẫn. Trong những gì bạn đã viết, ~
là giữa hai dấu ngoặc kép và do đó không được mở rộng. Ngay cả khi bạn đã viết export "PATH=$PATH:"~/Unix/homebrew/bin
, ~
nó sẽ không được mở rộng vì nó không ở đầu một từ vỏ.
Có một phân phối đặc biệt, nhằm mục đích viết các giá trị cho PATH
và các biến tương tự. Nếu ~
chỉ sau dấu bằng đánh dấu một nhiệm vụ hoặc nếu ~
chỉ sau một :
bên phải của một nhiệm vụ, thì nó được mở rộng. Chỉ các bài tập đơn giản mới có phần phân phối này, export PATH=…
không được tính (đó là một cuộc gọi đến export
nội dung, điều này xảy ra để có một đối số có chứa một =
ký tự).
Tại đây, bạn không cần xuất PATH
vì nó đã được xuất. Bạn không cần phải gọi export
khi bạn thay đổi giá trị của một biến (ngoại trừ trong các vỏ Bourne cũ mà bạn sẽ không tìm thấy trên OSX hoặc Linux). Ngoài ra, trong một bài tập (một lần nữa, export
không được tính), bạn không cần dấu ngoặc kép quanh phía bên tay phải, vì vậy PATH=$PATH:~/Unix/homebrew/bin
vẫn an toàn ngay cả khi $PATH
có khoảng trắng.
which
không có lỗi ở đây; các~
lẽ ra phải được mở rộng trong định nghĩa củaPATH
. Có một điều kỳ lạ trong bash rằng~
dù sao nó cũng mở rộng raPATH
, vì vậy hai cái sai tạo thành một loại đúng.