Không thay thế sudo cho / usr / local / bin cho các tập lệnh phổ biến


16

Tôi đã quen với việc đưa các tập lệnh phổ biến vào /usr/local/binđể tôi có thể thực thi chúng từ bất cứ đâu với thiết bị đầu cuối.

Ví dụ, tôi tạo một tập lệnh shell có tên 1, làm cho nó có thể thực thi được chmod +x 1và đặt nó vào /usr/local/bin, và bên trong tập lệnh tôi gõ #!/bin/shtrên dòng đầu tiên, và sau đó là các lệnh của tôi. Từ đó trở đi, rất thuận tiện để sử dụng và thực hiện nhanh chóng bằng cách gõ

1Enter

trên thiết bị đầu cuối, từ bên trong bất kỳ thư mục.

Vấn đề của tôi là hiện tại tôi đang làm việc trên một máy tính không thể làm được sudovà tôi cũng không thể có được nó, vì vậy tôi không thể đặt tập lệnh của mình vào /usr/local/bin.

Những lựa chọn của tôi là gì? Có một con đường khác có cùng khả năng "chạy từ bất cứ đâu" mà tôi có thể truy cập mà không cần sudohoặc cách nào khác để đạt được điều gì đó tương đương không?

Câu trả lời được chấp nhận cho bài viết này nói

Đối với tập lệnh phạm vi người dùng, sử dụng bin / trong thư mục chính của bạn.

Tôi đã thử, nhưng không có binthư mục nào trong thư mục nhà của tôi và khi tôi tạo một thư mục, tôi vẫn không thể chạy tập lệnh từ bất kỳ nơi nào khác.

Tôi đang chạy trên Ubuntu 12.04 LTS.


2
Đừng sử dụng 1 hoặc một cái gì đó giống như tên tập lệnh. Hãy thử tính toán một cái gì đó trong vỏ của bạn: ví dụ: expr 1 + 1 (và nếu không bạn đang làm điều đó, một số kịch bản sẽ làm điều đó vào một lúc nào đó chắc chắn)
frlan

1
@frlan: Làm thế nào sẽ expr 1 + 1bị ảnh hưởng bởi sự hiện diện của một tập lệnh có tên 1?
psmears

Đúng ... không ảnh hưởng expr, cũng không phải là số học bash $(( 1 + 1 )).
Campa

Câu trả lời:


19

Những lựa chọn của tôi là gì? Có một con đường khác có cùng khả năng "chạy từ bất cứ đâu" mà tôi có thể truy cập mà không cần sudo, hoặc một cách khác để đạt được điều gì đó tương đương?

Làm thế nào để làm nó?

Tạo một số thư mục trong nhà của bạn để giữ các tập lệnh của bạn thường được đặt tên binlà quy ước.

mkdir ~/bin

Bây giờ di chuyển tập lệnh của bạn vào bin

mv somescript ~/bin

Bây giờ làm thế nào để làm cho nó điều chỉnh từ khắp mọi nơi?!

Bạn phải thêm bin PATH

mở của bạn .bashrc

gedit .bashrc

và thêm dòng này:

export PATH=$PATH:/home/username/bin

Đừng quên thay thế username bằng Tên người dùng của bạn

Lưu và thoát, sau đó nguồn bashrc

source .bashrc

và bây giờ bạn ổn, bạn có thể chạy tập lệnh của mình như trước đây! nhưng bạn phải lưu ý rằng điều này chỉ liên quan đến người dùng của bạn.

Lưu ý: Tốt hơn là đổi tên tập lệnh của bạn ngoài 1, 2 vì bạn có thể gặp một số vấn đề với tên đó


CẬP NHẬT:

Bạn có thể làm tương tự chỉ cần tạo bin dir trong nhà của bạn sau đó source ~/.profilethay vì ~/.bashrc. Vì việc thêm ~ / bin vào PATH của bạn đã được liệt kê trong.profile

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Tôi sử dụng export PATH=$PATH:$HOME/binđể tôi có thể sử dụng cùng một bashrc cho các tài khoản khác có tên người dùng khác nhau.
Anthony G - công lý cho Monica

1
Chỉ cần đề cập đến ~/bin$PATHtheo mặc định trên Ubuntu. Chỉ cần chạy source ~/.profilehoặc đăng xuất / đăng nhập sau khi bạn tạo thư mục.
Jacob Vlijm

@JacobVlijm Ở phiên bản nào? !!! Tôi sử dụng 12.04, 14.04, 15.04 và không ai trong số họ có ~ / bin trong PATH
Maythux

Trong tất cả chúng, tôi luôn sử dụng nó, trong nhiều câu trả lời (được chấp nhận) của tôi, không bao giờ có bất kỳ nhận xét nào về điều đó, làm việc ở nhà trên năm hệ thống, nhưng, như đã nói, sau khi chạy source ~/.profile. Xem (ví dụ) tại đây: askubfox.com/a/247422/72216
Jacob Vlijm

1
Anh nói nguồn ~/.profile, anh không bao giờ nói nguồn ~/.bashrc. :) Ngoài ra, như một quy tắc chung, các biến môi trường nên đi vào .profilevà không phải .bashrcvì chúng chỉ cần được thiết lập một lần. (không có gì trong số này là để nói rằng câu trả lời của bạn không tốt, làm phiền bạn và +1 từ tôi)
terdon

4

Ngoài https://askubfox.com/a/643030/218015, bạn cũng có thể xác định bí danh bên trong .bashrc của mình cho các tác vụ nhỏ, thường được sử dụng. Ví dụ

alias ll='ls -l'
alias ls='ls --color=auto'

sẽ tạo cho bạn một "lệnh" ll, đang thực hiện ls -l và ls sẽ được tô màu sau khi xác định bí danh. https://wiki.ubfoxusers.de/alias đang có thêm một số ví dụ và cách để thiết lập nó.

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.