Khi bạn cung cấp dấu gạch nối kép, trải nghiệm bạn sẽ có giống hệt nếu bạn vừa thực hiện sudo su
mà không có dấu gạch nối.
Vượt qua một dấu gạch nối đơn giống hệt như vượt qua -l
hoặc --login
. Trang hướng dẫn su
mô tả hành vi như sau:
Cung cấp một môi trường tương tự như những gì người dùng mong đợi nếu người dùng đăng nhập trực tiếp.
Điều này bao gồm thiết lập thư mục của bạn vào thư mục chính của bạn và thiết lập một loạt các biến môi trường khác.
Truyền một dấu gạch nối kép cho một lệnh thường được sử dụng để đánh dấu sự kết thúc của các cờ dòng lệnh và bắt đầu các đối số không phải là cờ. Ví dụ: nếu bạn chạy, touch -R
bạn sẽ gặp lỗi khi nói rằng -R không phải là một tùy chọn touch
, nhưng nếu bạn chạy, touch -- -R
nó sẽ tạo một tệp có tên -R
. Điều này đúng với nhiều công cụ dòng lệnh ( ls -R
sẽ thực hiện đệ quy ls
trong khi ls -- -R
sẽ thực hiện ls
trên một tệp hoặc thư mục có tên -R
.
Vì vậy, để bọc này lên, khi bạn vượt qua chỉ --
để su
nó về cơ bản là bỏ qua --
và hành động như bạn đã không vượt qua bất kỳ tùy chọn nào cả.
sudo su -
vàsudo su -l
khác nhau. Trên tài khoản mà tôi chỉ nhập bằng một khóa và tôi có quyền sudo để thay đổi thành một người dùng cụ thể khác,sudo su -
thay đổi người dùng mà không gặp vấn đề gìsudo su -l
hoặcsudo su --login
sẽ yêu cầu mật khẩu sudo mà tôi không có (mặc dù bằng cách kiểm trasudo -l
tôi có thể thực thi/bin/su
với NOPASSWD)