Tại sao không phải là sudo cd nghiêm trọng làm việc?


Câu trả lời:


55

cdlà một vỏ dựng sẵn. sudochỉ hoạt động với thực thi. Bạn có thể làm sudo sh -c 'cd dirname'nhưng ngay khi thoát khỏi trình bao, bạn sẽ quay trở lại thư mục bạn đã bắt đầu. Nếu bạn nói những gì bạn đang cố gắng thực hiện thì tôi có thể giúp bạn tìm ra cách để làm điều đó.


2
Nhưng sau đó sudo pwdcũng không hoạt động? (Tôi luôn hình dung rằng sudo cd không làm việc, nhưng bạn chỉ cần không nhìn thấy kết quả sau khi sudotrở về. Nhưng đó chỉ là một đoán hoang dã. Có lẽ không phải cdvà cũng không pwdthực sự tích hợp sẵn trong Bash trên Chạy. Mac which cd không thực sự cho tôi kết quả. Chạy sudo cd /không cho tôi một lỗi, nhưng thực sự không dẫn đến một thư mục làm việc đã thay đổi.)
Arjan

2
@Arjan: pwdcũng là một tệp thực thi bên ngoài nên nó sẽ hoạt động. Lưu ý rằng trên một số hệ thống, có một cdtệp thực thi, nhưng nó hầu như vô dụng. Nhân tiện, hãy thử sử dụng type -a cdnó nhiều thông tin hơn which.
Dennis Williamson

1
Đẹp! type -a cdhiển thị cả cd is a shell builtincd is /usr/bin/cdtrên máy Mac của tôi. Và tương tự như vậy cho pwdecho. Và cả hai sudo pwdsudo echo "Hello world"làm cho tôi một kết quả. Tuy nhiên, type -a returnchỉ mang lại sản lượng return is a shell builtin, và sudo return 3cho tôi thấy sudo: return: command not found. Vì vậy, tôi đoán câu hỏi là: OP có nhận được thông báo lỗi không, hoặc OP không thấy cdcông việc mà không có lỗi? (Hoặc: OP sử dụng hệ điều hành nào.)
Arjan

sudo sh -c 'cd dirname'không làm gì cho tôi
Peter Niederwieser

@Peter: Xem phần câu trả lời của tôi bắt đầu "nhưng ..."
Dennis Williamson

72

Thay vào đó hãy thử sử dụng sudo -sđể bắt đầu một shell root và sau đó chỉ cần cdvào thư mục.
Khi bạn hoàn thành root, nhấn CtrlDhoặc gõ exit.


Như Arjan gợi ý trong nhận xét của mình dưới đây, điều quan trọng cần lưu ý là khi root, người ta có thể dễ dàng gây thiệt hại cho các thành phần hệ thống thiết yếu. Sử dụng cẩn thận!


4
Nhưng: hãy cẩn thận, một khi đã root ...
Arjan

7

Bạn có thể chỉ cần sutrở thành root và sau đó là cdtất cả những gì bạn muốn ... Tôi biết một câu trả lời đã được chấp nhận, nhưng nếu nó không có trong danh sách sudoers thì đây là lựa chọn duy nhất.


Mặt khác, nếu không có mật khẩu root hoặc bạn không biết nó, sudo là lựa chọn duy nhất.
Liam
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.