Là $PATHgì
Làm thế nào tôi có thể có các lệnh / chương trình chỉ dành cho tôi?
Tôi đã thấy con đường này ~/binđược đề cập trước đây, nhưng nó được sử dụng để làm gì và làm thế nào để tôi sử dụng nó?
Là $PATHgì
Làm thế nào tôi có thể có các lệnh / chương trình chỉ dành cho tôi?
Tôi đã thấy con đường này ~/binđược đề cập trước đây, nhưng nó được sử dụng để làm gì và làm thế nào để tôi sử dụng nó?
Câu trả lời:
$ PATH là một biến môi trường được sử dụng để tra cứu các lệnh. ~ Là thư mục chính của bạn, vì vậy ~ / bin sẽ là / home / user / bin; nó là một thư mục bình thường
Ví dụ, khi bạn chạy "ls" trong trình bao, bạn thực sự chạy chương trình / bin / ls; vị trí chính xác có thể khác nhau tùy thuộc vào cấu hình hệ thống của bạn. Điều này xảy ra bởi vì / bin nằm trong $ PATH của bạn.
Để xem đường dẫn và tìm vị trí của bất kỳ lệnh cụ thể nào:
$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls # searches $PATH for an executable named "ls"
/bin/ls
$ ls # runs /bin/ls
bin desktop documents downloads examples.desktop music pictures ...
$ /bin/ls # can also run directly
bin desktop documents downloads examples.desktop music pictures ...
Để có thư mục bin riêng của bạn, bạn chỉ cần thêm nó vào đường dẫn. Thực hiện việc này bằng cách chỉnh sửa ~ / .profile (một tệp ẩn) để bao gồm các dòng dưới đây. Nếu các dòng được nhận xét, bạn chỉ phải bỏ ghi chú chúng; nếu họ đã ở đó, bạn đã sẵn sàng!
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
Bây giờ bạn cần tạo thư mục ~ / bin của mình và, vì .profile được chạy khi đăng nhập và chỉ thêm ~ / bin nếu nó tồn tại vào thời điểm đó, bạn cần phải đăng nhập lại để xem PATH được cập nhật.
Hãy thử nghiệm xem:
$ ln -s $(which ls) ~/bin/my-ls # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls # lookup through $PATH
bin desktop documents downloads examples.desktop music pictures ...
$ ~/bin/my-ls # doesn't use $PATH to lookup
bin desktop documents downloads examples.desktop music pictures ...
typeđể xem cách một lệnh thực tế sẽ được giải quyết bằng shell; ví dụ: which echovà type echosẽ báo cáo những thứ khác nhau, whichtrả về '/ bin / echo' nhưng 'type' trả về rằng đó là một phần tử dựng sẵn, mà shell sẽ thích hơn tệp trong '/ bin'.
whichđược thay thế tốt hơn bằng typehoặc commandtrong các vỏ tương tác, và nó hoàn toàn vô dụng trong các tập lệnh.
$HOMEbiến trong $PATHmột số lý do không hoạt động, tức là người ta phải sử dụng ~dấu thay thế.
Liên quan ~/binvà các lệnh / chương trình chỉ có sẵn cho người dùng của bạn
Các phiên bản Ubuntu gần đây bao gồm ~/binthư mục trong của bạn $PATH, nhưng chỉ khi ~/binthư mục tồn tại.
Nếu nó không tồn tại:
Đảm bảo rằng bạn ~/.profilecó chứa khổ thơ sau (mặc định ~/.profileđã có):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Tạo ~/binthư mục:
mkdir -p ~/bin
Khởi động lại máy tính của bạn hoặc buộc bash đọc lại ~/.profile:
exec -l bash
exec -l bashmẹo "khởi động lại hoặc ". Không những gì -lcờ làm gì? Tôi không tìm thấy một lời giải thích trong man exec.
exec -lsẽ thực thi bash dưới dạng shell đăng nhập [ wiki.bash-hackers.org/commands/builtin/exec] . Nói tóm lại, nó buộc bash phải đọc lại /etc/profilevà ~/.profile. Chỉ cần chạy exec bashsẽ chỉ đọc lại ~/.bashrc.