Dòng đó trong bạn .profilenê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 PATHvà 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 exportnộ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 PATHvì nó đã được xuất. Bạn không cần phải gọi exportkhi 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, exportkhô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/binvẫn an toàn ngay cả khi $PATHcó khoảng trắng.
whichkhô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.