OS X - Tạo thư mục bin cá nhân (~ / bin) và chạy tập lệnh mà không chỉ định đường dẫn đầy đủ của chúng


19

Vì vậy, những gì tôi đang cố gắng làm là tạo một binthư mục cá nhân tại thư mục nhà của tôi. Tôi đã tạo thư mục sau:

/Users/thi/bin

Tôi đặt tập lệnh của mình vào thư mục này, nhưng nếu tôi gõ vào Terminal:

myScript

Nó không chạy.

Tôi được cho biết là tôi phải xuất con đường bin này, một cái gì đó liên quan đến echo $PATH, nhưng tôi không biết làm thế nào để làm điều đó.


xem thêm về cuối của apple.stackexchange.com/a/98626
nohillside

Câu trả lời:


20

Bạn cần thêm các mục sau vào tập tin ~/.profile:

export PATH=/Users/thi/bin:$PATH

Sau đó source ~/.profile

Lưu ý, rằng bạn có thể cần phải tạo tệp này và vì nó bắt đầu bằng .tệp nên có thể không hiển thị trong trình tìm để chỉnh sửa thông qua một ứng dụng như trình soạn thảo văn bản. Để liệt kê tất cả các tệp bao gồm các tệp ẩn, sử dụng:

ls -la ~/

Nếu tôi thêm xuất PATH = / Users / thi / bin: $ PATH vào tệp .bashrc của tôi, nó có hoạt động không? Nó có đúng không?
Thi G.

12
Sử dụng tốt hơn $HOME/binthay vì /Users/thi/bin. Sau đó, bạn sẽ có thể sao chép cài đặt của mình sang một máy khác, nơi tên người dùng của bạn có lẽ khác.
lhf

Nếu tôi gõ vào terminal: PATH = $ HOME / bin: $ PATH và sau đó gõ: export PATH. Nó sẽ làm điều đó?
Thi G.

1
Nếu bạn làm điều đó, nó sẽ thay đổi các cài đặt ngay bây giờ, nhưng không phải trên các đôi giày trong tương lai. Để thay đổi đường dẫn theo cách sống sót khi khởi động lại, bạn cần bao gồm các lệnh đó trong .profiletệp của mình .
Daniel

1
Tuyệt vời, cảm ơn tất cả các câu trả lời. Tôi đã thêm export PATH=$HOME/bin:$PATHvào của tôi $HOME/.bash_profile.
Thi G.

10

Nếu bạn sử dụng bash, hãy thêm một dòng như thế này vào ~/.bash_profile:

PATH=~/bin:$PATH

PATHđược đánh dấu để xuất theo mặc định, vì vậy bạn không cần sử dụng export.

Nếu cả hai ~/.bash_profile~/.profiletồn tại, bash chỉ đọc ~/.bash_profilekhi nó được gọi dưới dạng vỏ đăng nhập tương tác. ~/.profilecũng được sử dụng bởi các shell khác có thể không hiểu các tùy chọn cấu hình tương tự như bash.

Terminal và iTerm 2 mở shell mới dưới dạng shell đăng nhập theo mặc định. Khi bash được gọi như một vỏ đăng nhập tương tác, nó đọc ~/.bash_profilenhưng không ~/.bashrc. Trình giả lập thiết bị đầu cuối trên các nền tảng khác thường mở shell mới dưới dạng shell không đăng nhập, vì vậy, ví dụ bash đọc ~/.bashrcnhưng không ~/.bash_profile. Người dùng OS X thường sử dụng ~/.bash_profilelàm tệp cấu hình cá nhân tương ứng với ~/.bashrccác nền tảng khác, nhưng nó cũng phổ biến ~/.bashrctừ nguồn ~/.bash_profilehoặc để nói với Terminal hoặc iTerm 2 để mở shell mới dưới dạng shell không đăng nhập.

Bạn cũng có thể thay đổi đường dẫn trên toàn cầu trong /etc/pathshoặc /etc/launchd.conf, nhưng trong nhiều bối cảnh, đường dẫn vẫn sẽ được mặc định /usr/bin:/bin:/usr/sbin:/sbin. Và tôi chỉ thực sự cần thiết để thay đổi đường dẫn trong trình bao và trình soạn thảo văn bản.


Tuyệt vời, thks cho câu trả lời. Tôi đã thêm export PATH=$HOME/bin:$PATHvào của tôi $HOME/.bash_profile.
Thi G.

Bạn không cần xuất và cả hai ~(khi không được trích dẫn) và $HOMEđược mở rộng trước khi gán biến cả khi sử dụng xuất hoặc gán đơn.
Lri

Lauri Ranta, bạn thích cá nhân hơn, .bash_profilehay .profile? Hoặc bạn có một .bashrctrong thư mục nhà của bạn?
Thi G.

Tôi đã từng chỉ sử dụng .bash_profile, nhưng bây giờ tôi sử dụng .bashrc làm tệp cấu hình chính và .bash_profile của tôi chỉ chứa . ~/.bashrc. Các shell mới được mở dưới dạng các shell không đăng nhập ở chế độ shell trong emacs và trong tmux. Tôi sẽ không sử dụng .profile làm tệp cấu hình chính của mình, vì nó cũng được đọc bởi các shell khác như ksh.
Lri

3

Bạn thường sẽ đặt các đường dẫn bổ sung sau khi $PATHthích PATH=$PATH:/$HOME/binvì nếu bạn không muốn thay thế một tệp thực thi khác có cùng tên /bin, v.v.


4
Người ta có thể dễ dàng lập luận rằng bạn sẽ đặt $HOME/binngay từ đầu chính xác vì lý do đó. Nhưng điều quan trọng là thứ tự của các thư mục trong $PATHcác vấn đề và shell sẽ chọn lệnh khớp đầu tiên. Cảm ơn đã chỉ ra điều này.
nohillside
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.