Tôi có một bí danh truyền một số tham số cho một công cụ mà tôi thường sử dụng. Đôi khi tôi chạy như chính mình, đôi khi theo sudo. Thật không may, tất nhiên, sudo không nhận ra bí danh.
Có ai có một gợi ý về cách vượt qua bí danh?
Trong trường hợp này, tôi có một loạt các tùy chọn cho perl khi tôi gỡ lỗi:
alias pd='perl -Ilib -I/home/myuser/lib -d'
Đôi khi, tôi phải gỡ lỗi các công cụ của mình dưới dạng root, vì vậy, thay vì chạy:
pd ./mytool --some params
Tôi cần phải chạy nó dưới sudo. Tôi đã thử nhiều cách:
sudo eval $(alias pd)\; pd ./mytool --some params
sudo $(alias pd)\; pd ./mytool --some params
sudo bash -c "$(alias pd)\; pd ./mytool --some params"
sudo bash -c "$(alias pd); pd ./mytool --some params"
sudo bash -c eval\ "$(alias pd)\; pd ./mytool --some params"
sudo bash -c eval\ "'$(alias pd)\; pd ./mytool --some params'"
Tôi đã hy vọng một cách hay, ngắn gọn để đảm bảo rằng bí danh pd hiện tại của tôi đã được sử dụng đầy đủ (trong trường hợp tôi cần phải điều chỉnh nó sau), mặc dù một số nỗ lực của tôi không ngắn gọn. Phương án cuối cùng của tôi là đưa nó vào một kịch bản shell và đặt nó ở đâu đó mà sudo sẽ có thể tìm thấy. Nhưng bí danh đôi khi rất tiện dụng, vì vậy nó là phương sách cuối cùng.
A trailing space in value causes the next word to be checked for alias substitution when the alias is expanded.