Là $PATH
gì
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à $PATH
gì
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 echo
và type echo
sẽ báo cáo những thứ khác nhau, which
trả 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 type
hoặc command
trong các vỏ tương tác, và nó hoàn toàn vô dụng trong các tập lệnh.
$HOME
biến trong $PATH
mộ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 ~/bin
và 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 ~/bin
thư mục trong của bạn $PATH
, nhưng chỉ khi ~/bin
thư mục tồn tại.
Nếu nó không tồn tại:
Đảm bảo rằng bạn ~/.profile
có 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 ~/bin
thư 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 bash
mẹo "khởi động lại hoặc ". Không những gì -l
cờ làm gì? Tôi không tìm thấy một lời giải thích trong man exec
.
exec -l
sẽ 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/profile
và ~/.profile
. Chỉ cần chạy exec bash
sẽ chỉ đọc lại ~/.bashrc
.