Mac OS X - Cách Symlink / home to / Users


14

Đối với những người trong chúng ta nghiên cứu chim cánh cụt và táo, có vẻ rất đáng để sử dụng / đường dẫn về nhà hoặc ngoài những trường hợp kỳ lạ mà giá trị có thể đã được đồng bộ hóa ở đâu đó dọc theo dòng trong một số tệp bạn sử dụng trên cả hai máy.


6
~usernamemở rộng đến thư mục nhà của bạn bất kể Mac OSX hay Linux.
nohillside

1
Tôi biết điều này, nhưng một số ứng dụng đa nền tảng lưu đường dẫn tuyệt đối. Một ví dụ là Văn bản cao siêu 2.
anthonyryan1

1
Trong thực tế chỉ cần ~mở rộng đến thư mục nhà của bạn. Bạn có thể vui lòng làm rõ trong câu hỏi của mình xem bạn muốn liên kết đến thư mục nhà người dùng của bạn (ví dụ. /Users/[username]) Hoặc trên thực tế chính thư mục Người dùng ( /Users/) có chứa các thư mục riêng cho tất cả người dùng trên máy không?
smartbit 22/03/13

Câu trả lời:


19

sudo ln -s /Users /homesẽ hoạt động với cấu hình bổ sung, nhưng tôi không nghĩ rằng đó là một ý tưởng tốt khi bạn nên truy cập trang chủ qua ~shell hoặc $HOME. Cũng /homecó thể là một tiêu chuẩn Linux và thường được sử dụng trong Unix nhưng không phải lúc nào cũng tốt hơn để dựa vào thông tin được đảm bảo để hoạt động không phải là thứ chỉ hoạt động trong hầu hết thời gian nếu mọi người đều tuân theo quy ước.

Để thực hiện sudo ln -s /Users /homecông việc, hãy làm theo các bước sau (từ các ý kiến):

EDITOR=nano sudo -e /etc/auto_master
# add a "#" at the start of the line beginning with /home
# save changes
sudo automount -cv
sudo ln -s /Users /home

7
Đầu tiên chỉnh sửa /etc/auto_mastervà nhận xét ra dòng nhà. Sau đó khởi động lại để giải phóng tài nguyên hiện có / nhà. Sau đó, bạn có thể symlink thư mục bằng cách sử dụng sau đây. ln -s /Users /home. Cho đến khi bạn làm điều này, đơn giản là bạn sẽ không được phép tạo liên kết tượng trưng khi tài nguyên đang bận.
anthonyryan1

@AR. Có bất kỳ hậu quả tiêu cực tiềm ẩn nào khi làm như vậy (hoặc tại sao nó lại ở đó ngay từ đầu không?). Và tôi không được phép chỉnh sửa nó ngay cả khi root hoặc sau chmod a + w / etc / auto_master có cách nào khác không?
Abe

2
-1. Điều này dẫn đến một operation not supportedtin nhắn
Abe

2
@Abe Sẽ không nếu bạn làm theo chỉ dẫn của @ AR. Lưu ý rằng bạn không phải khởi động lại; bạn có thể chạy sudo automount -cvthay thế
zigg

@zigg cảm ơn. Nhưng điều đó vẫn không làm cho câu trả lời hoàn thành. Tôi sẽ đề xuất một chỉnh sửa - dù sao tôi cũng không thể downvote!
Abe

5

Tôi rất tiếc câu trả lời này không chính xác, vì tôi chưa bao giờ thực sự làm điều này - mặc dù tôi đã sử dụng một thiết bị tự động tương tự trên các hệ thống Unix khác - nhưng đây là sự hiểu biết của tôi về những gì /homeđược sử dụng cho OS X.

Vì vậy, hãy đi theo con đường:

Nếu bạn lần đầu tiên nhập mountvào Terminal để hiển thị gắn kết hoạt động, bạn sẽ thấy dòng này:

map auto_home on /home (autofs, automounted, nobrowse)

autofsbản đồ được xác định trong /etc/auto_master/homelần lượt được xác định cụ thể trong /etc/auto_home. Nếu bạn xem /etc/auto_home, bạn sẽ thấy dòng này:

+/usr/libexec/od_user_homes

Theo các dấu vết thêm một bước để các od_user_homestrang người đàn ông , và bạn sẽ tìm thấy một chương trình có mục đích là để có một Tên truy nhập, nhìn nó trong Open Directory, và trả về một URL vào thư mục chính của người dùng đó. Nếu bạn đọc lên trên auto_mastertại trang người đàn ông của mình , bạn sẽ thấy rằng việc sử dụng một chương trình thực thi cho một kết quả bản đồ trong chương trình được gọi là để tìm kiếm một địa chỉ URL để gắn kết, đó là lần lượt gắn tại chỗ.

Ứng dụng dự định dường như là, nếu máy Mac của bạn được kết nối với dịch vụ thư mục, điều đó /home/jdoesẽ khiến cho bộ thu tự động gắn kết jdoethư mục chính của nó ở đó.

Dựa trên điều này, có vẻ hợp lý khi kết luận rằng nếu bạn không có ý định kết nối máy Mac của mình với một dịch vụ thư mục, có lẽ bạn đã loại bỏ việc /hometự động gắn kết như chi tiết trong nhận xét này . Tôi không biết làm thế nào các bản cập nhật hệ điều hành trong tương lai sẽ đối phó với điều này, mặc dù.


1
Tôi thích sử dụng thiết bị tự động hơn là vô hiệu hóa nó. Vì vậy, tôi sẽ cho phép tự động gắn kết / Người dùng / $ USER vào / home / $ USER. Tôi tự hỏi liệu nó có đơn giản như thay thế dòng đó trong / etc / auto_home bằng một cái gì đó như "+ / bin / echo / home / $ 1" hoặc nếu bạn muốn xử lý lỗi thích hợp, hãy tạo một tập lệnh sao chép od_user_homes làm gì
Tim B

@TimB Suy nghĩ thú vị. Dù đã chơi với nó một chút, tôi không hoàn toàn chắc chắn rằng bạn có thể chỉ định một đường dẫn cục bộ automountdsẽ xử lý. Dường như có thể làm NFS, SMB và AFS.
zigg

Tôi không biết nếu nó hoạt động trên Linux, nhưng đó là điều tôi luôn làm trên Solaris. Thư mục thực là / export / home / $ USER và có một cấu hình tiêu chuẩn để tự động chuyển sang / home / $ USER. Trên thực tế, có vẻ như đó là cấu hình tiêu chuẩn trong Solaris 11.x theo blog.oracle.com/observatory/entry/automounted_home_directory
Tim B

1
Tôi chỉ nhìn nhanh thôi. Bạn thậm chí không cần phải bắt chước bản đồ thực thi od_user_homes. Đó chỉ là để hỗ trợ OD. Có thể tự động hóa thông thường của / Người dùng / $ USER trên / home / $ USER. Nó được hiển thị trong trang man auto_master, mặc dù ví dụ ở đó hiển thị các mount NFS từ xa thay vì các thư mục cục bộ, nó cũng hoạt động cục bộ.
Tim B

Tôi có thể đã làm sai điều gì đó, nhưng tôi đã thử cấu hình một đường dẫn cục bộ nơi tôi có thể sử dụng ngàm NFS và nhận được Input/output errorkhi cố gắng cd. Từ việc đọc của tôi, có vẻ như tôi chỉ có thể sử dụng NFS, SMB hoặc AFS, như tôi đã nói. Nhưng có lẽ chúng ta nên mang dòng thử nghiệm này đi nơi khác
zigg

2

Không có sử dụng cho /home. OS X, giống như nhiều phiên bản Unix khác, có một vị trí duy nhất cho người dùng. Trong Linux, nó ở /home/uservà trong OS X, nó ở /Users. Đây là lý do tại sao nên sử dụng tốc ký " ~" hoặc biến môi trường $HOME.

Trong khi bạn có thể tạo một liên kết tượng trưng đến thư mục cơ sở / nhà của người dùng /Users/[username]bằng lệnh sau:

ln -s ~ /foo

Nó sẽ không hoạt động để tạo một liên kết có tên /homevì đã có một thư mục (n không sử dụng) với tên đó ở thư mục gốc của hệ thống.


1
Chính xác. Tôi đã sử dụng các hệ thống tương tự Unix khác sử dụng các quy ước khác cho các thư mục nhà vì nhiều lý do, ví dụ như /export/home/usernametrên Solaris. Đó là thực tế xấu để giả định /home/usernamesẽ làm việc. Các chương trình tìm kiếm thư mục nhà nên được sử dụng getpwnamhoặc getpwuid.
zigg

1
Tôi hoàn toàn đồng ý rằng việc các chương trình cho rằng đó là sự tồn tại tồi tệ, nhưng điều đó không giải quyết được rằng đôi khi phần mềm không được phát triển theo cách có thẩm quyền.
anthonyryan1

Trong số các thú cưỡi trong trường hợp của tôi và những người khác: map auto_home on /home (autofs, automounted, nobrowse)Tôi trong khi tôi không biết nguồn gốc của thú cưỡi đó, tôi không đồng ý với "không sử dụng cho /home".
Graham Perrin

Xin lỗi nên rõ ràng hơn: chỉ có nghĩa /homelà rõ ràng là được bảo lưu, nhưng không được sử dụng trong OSX, không phải là không có điểm nào sử dụng nó;)
smartbit 27/03/13

@richarddas Tôi nhận được operation not supportedlỗi tương tự sudo ln -s /Users/username /home/usernamenhư tôi làm từ sudo ln -s /Users /home. Giải pháp được cung cấp bởi @AR hoạt động (nhận xét /homedòng trong /etc/auto_mastervà khởi động lại).
Abe

1

Tôi hoàn toàn không thấy lý do nào để không đổi tên thư mục / nhà (trong trường hợp tôi sai) và tạo một liên kết tượng trưng từ / home đến / Users (hoặc, như trong máy của tôi, / Khối / Người dùng kể từ hệ thống của tôi đĩa dành cho hệ thống, chết tiệt!)

Tôi đã từng làm việc như một sysadmin, trong một khoa đại học với 11 hương vị unix. Chúng tôi có tất cả các loại liên kết tượng trưng trong cây thư mục toàn cầu để hệ thống tệp sẽ thực hiện đúng và các tập lệnh đến gần nhất có thể để hoạt động ở mọi nơi. Bạn có chạy vào một vài vấn đề, nhưng nếu ngón tay của bạn đã quen với việc gõ / home / foo và một công việc postpones postpones việc đào tạo lại cho ngón tay của bạn, hãy đi.

Tương tự một số linuxen sẽ có thư mục Home là / usr / home rồi.

Một nơi tôi làm việc có các thư mục nhà của / Users / {group} / {username} như một sự bảo vệ một phần chống lại sinh viên mò mẫm xung quanh các tập tin giáo sư nếu prof bất cẩn với sự cho phép của anh ta. Thư mục Người dùng đã thực thi nhưng không có bit đọc nào được đặt và các thư mục nhóm chỉ có thể đọc được đối với các thành viên nhóm.

(Tất cả điều này trong hình minh họa có nhiều cách để tước đi chú mèo đặc biệt này.

Một điều có thể xảy ra - kiểm tra xem cỗ máy thời gian không kết thúc bằng hai bản sao của mọi thứ. Tôi không biết làm thế nào TM đối xử với các liên kết tượng trưng. Nếu có, hãy thêm / home vào danh sách loại trừ TM.


1
Nếu một cái gì đó hoặc ai đó đặt chế độ không phù hợp hoặc ACL cho lựa chọn thay thế của bạn /Usersthì các thói quen quen thuộc để sửa chữa quyền có thể sẽ không thực hiện các chỉnh sửa cần thiết. Vì vậy, tôi khuyên bạn /Usersnên cài đặt như Apple: một thư mục, không phải là một liên kết tượng trưng.
Graham Perrin

0

Tôi đã thử điều này trước đây và nó hoạt động được khoảng một tuần cho đến khi tôi khởi động lại ...

Bạn không thể chỉ liên kết /homeđến /Users. Trong thực tế, bạn thậm chí không thể loại bỏ /home.

Nếu bạn quản lý để loại bỏ /home, nó sẽ xuất hiện lại sau khi bạn khởi động lại.

Nếu bạn di chuyển /homeđến /home.oldvà symlink /home, nó sẽ xóa symlink /home.

Bạn có thể làm việc này miễn là máy Mac của bạn không gặp sự cố hoặc khởi động lại.

Khi bạn khởi động lại, tất cả biến mất!

Khi bạn khởi động lại, Mac OS X dường như nghĩ rằng bạn đang tạo một người dùng mới, vì vậy nó sẽ ghi đè lên tất cả các tùy chọn người dùng của bạn trong /Users/usernamethư mục cũ .

Vì bạn đã sao chép mọi thứ vào /home/username, bạn sẽ thấy thư mục nhà mới của mình khi thực hiện ls /homesau khi khởi động lại. Thay vào đó, bạn nhận được KHÔNG CÓ !!! Như thể nó chưa từng tồn tại.

Trong trường hợp của tôi, tôi đã hoảng loạn trong khoảng 30 phút, sau đó tôi khởi động vào chế độ người dùng duy nhất để xem có thể làm gì đó không. Tôi đã nghĩ rằng tôi có thể lấy một tệp nhật ký hoặc thử bắt đầu một tiện ích sửa chữa.

Trong chế độ người dùng duy nhất, thư mục nhà của tôi đã ở đó. Apple cố tình che giấu mọi thư mục mới được tạo bên dưới /hometừ người dùng khi ở chế độ nhiều người dùng. Đây là một tính năng thiết kế ác cố ý.

Apple khập khiễng và không khuyến khích bất kỳ và tất cả các loại hack hệ điều hành của họ. Loại tính năng thiết kế đó là gì? Apple ẩn nội dung của thư mục mới được tạo /home. Hoàn toàn không có lý do chính đáng để Apple tự động xóa /homethư mục ... hoặc bất kỳ thư mục nào do người dùng tạo!

Trong trường hợp này, họ đang gắn một thư mục trên thư mục / home của bạn ... ẩn nó một cách hiệu quả.

Nếu bạn thực sự quyết tâm sử dụng /homethay vì /Users, bạn có thể khắc phục bằng cách viết một tập lệnh để thiết lập mọi thứ khi khởi động.

Ngoài ra, tôi nên đề cập rằng bạn sẽ có thể sử dụng một số thư mục khác không phải /homelà một thay thế cho /Usersvì chỉ /homebị cấm.

Nếu bạn sử dụng bash, thì bạn sẽ phải đặt một số biến môi trường ... cụ thể là: CD_HOMEHOME.

Tôi muốn thêm rằng ... mặc dù bạn không thể ngắt kết nối hoặc buộc ngắt kết nối /home, bạn có thể gắn một đĩa lên trên /home. Tất cả điều này được gắn trên đầu "auto_home".

Tôi đã có thể gắn đĩa khôi phục lên trên /homethành công ... có lẽ đây là cách nó có thể được thực hiện.


TL / DR; Có thể tùy chỉnh lại bằng chứng khởi động lại bằng cách sử dụng câu trả lời được xếp hạng cao nhất
MarkHu
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.