Đâu là nơi ưa thích để đặt PATHenvvar?
~/.profilehay /etc/environment?
Trường hợp nào PATHđược đặt ở cả hai nơi? Là kết quả cuối cùng là sự kết hợp của cả hai giá trị được đặt ở hai vị trí đó?
Đâu là nơi ưa thích để đặt PATHenvvar?
~/.profilehay /etc/environment?
Trường hợp nào PATHđược đặt ở cả hai nơi? Là kết quả cuối cùng là sự kết hợp của cả hai giá trị được đặt ở hai vị trí đó?
Câu trả lời:
Tóm lược:
Nếu bạn muốn thêm một đường dẫn (ví dụ /your/additional/path) vào PATHbiến của mình cho người dùng hiện tại của bạn chứ không phải cho tất cả người dùng máy tính của bạn, bạn thường đặt nó ở cuối của ~/.profilemột trong hai ví dụ sau:
PATH="/your/additional/path:$PATH"
PATH="$PATH:/your/additional/path"
Lưu ý rằng các ưu tiên đường dẫn giảm dần từ trái sang phải, vì vậy đường dẫn đầu tiên có mức ưu tiên cao nhất. Nếu bạn thêm đường dẫn của mình ở bên trái $PATH, nó sẽ có mức ưu tiên cao nhất và các tệp thực thi trong vị trí đó sẽ ghi đè tất cả các đường dẫn khác. Nếu bạn thêm đường dẫn của mình ở bên phải, nó sẽ có mức ưu tiên thấp nhất và các tệp thực thi từ các vị trí khác sẽ được ưu tiên.
Tuy nhiên, nếu bạn cần đặt biến môi trường đó cho tất cả người dùng, tôi vẫn không khuyên bạn nên chạm vào /etc/environmentmà tạo một tệp có tên tệp kết thúc .shbằng /etc/profile.d/. Tập /etc/profilelệnh và tất cả các tập lệnh trong /etc/profile.dtương đương toàn cầu của mỗi cá nhân người dùng ~/.profilevà được thực thi dưới dạng tập lệnh shell thông thường bởi tất cả các trình bao trong quá trình khởi tạo.
Chi tiết hơn:
/etc/environmentlà một tệp cấu hình toàn hệ thống, có nghĩa là nó được sử dụng bởi tất cả người dùng. Nó được sở hữu bởi rootmặc dù, vì vậy bạn cần phải là người dùng quản trị và sử dụng sudođể sửa đổi nó.
~/.profilelà một trong những tập lệnh khởi tạo shell cá nhân của người dùng của bạn. Mỗi người dùng có một và có thể chỉnh sửa tệp của họ mà không ảnh hưởng đến người khác.
/etc/profilevà /etc/profile.d/*.shlà các tập lệnh khởi tạo toàn cầu tương đương ~/.profilevới mỗi người dùng. Các tập lệnh toàn cầu được thực thi trước các tập lệnh cụ thể của người dùng; và chính /etc/profilethực thi tất cả các *.shtập lệnh /etc/profile.d/ngay trước khi nó thoát.
Các /etc/environmenttập tin thường chỉ chứa dòng này:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Nó đặt PATHbiến cho tất cả người dùng trên hệ thống thành giá trị mặc định này, không nên thay đổi theo cách chính. Ít nhất bạn không nên loại bỏ bất kỳ của những con đường quan trọng như /bin, /sbin, /usr/binvà /usr/sbintừ nó.
Tệp này được đọc là một trong những tệp cấu hình đầu tiên bởi mọi shell của mọi người dùng. Lưu ý rằng nó không phải là một kịch bản shell . Nó chỉ là một tệp cấu hình được phân tích cú pháp bằng cách nào đó và chỉ có thể chứa các bài tập biến môi trường!
Các ~/.profiletập tin có thể chứa nhiều yếu tố, theo mặc định nó có chứa giữa những thứ khác một tấm séc liệu một ~/binthư mục tồn tại và bổ sung thêm rằng để tồn tại của người dùng PATHthay đổi, như thế này (trên Ubuntu phát hành cũ trước khi 16,04 - đó thêm nó vô điều kiện - và trên 18,04 , cũng thêm "~ / .local / bin"):
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Bạn thấy rằng giá trị cũ của việc PATHđược sử dụng lại ở đây và đường dẫn mới chỉ được thêm vào đầu thay vì ghi đè lên mọi thứ. Khi bạn muốn thêm đường dẫn mới theo cách thủ công, bạn cũng nên luôn giữ $PATHgiá trị cũ ở đâu đó trong chuỗi mới.
Kịch bản khởi tạo này chỉ được đọc bởi các shell của người dùng mà nó thuộc về, nhưng có một điều kiện khác:
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
Vì vậy, nếu bạn sử dụng shell Bash mặc định, bạn nên đảm bảo rằng bạn không có ~/.bash_profilehoặc ~/.bash_loginnếu bạn muốn các thay đổi ~/.profilecó ảnh hưởng đến người dùng của bạn.
Để hiểu đầy đủ về Biến môi trường, hãy xem: https://help.ubfox.com/community/En MôiVariables
Câu hỏi liên quan: sự khác biệt giữa tập tin bash.bashrc và / etc / môi trường
~/.profilekhông kiểm tra sự tồn tại của ~/binnó, nhưng nó chỉ đơn giản là có dòng:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
/etc/skel/.profiletrong 16.04 có dòng tôi đã đề cập. Bạn rõ ràng đã tạo người dùng của bạn trong một phiên bản trước.
~/.profilevẫn có cái này, nhưng bạn nói đúng - /etc/skel/.profilekhông có nó trên hệ thống 16.04 được nâng cấp của tôi (và tài khoản người dùng được tạo khi cài đặt 16.04 vào một máy khác không có nó trong của họ .profile).
Câu trả lời này chủ yếu là về thứ tự các biến môi trường như
PATHđược gán khi được chỉ định trong các tệp cấu hình khác nhau. Tôi cũng bao gồm nơi bạn thường nên đặt chúng, nhưng danh sách dưới đây không liệt kê các tệp theo thứ tự mà bạn nên xem xét sử dụng chúng. Để biết thông tin chung về cài đặtPATHvà các biến môi trường khác trong Ubuntu, tôi cũng khuyên bạn nên đọc Biến môi trường và các câu trả lời khác cho câu hỏi này.
Vị trí ưa thích để đặt PATHtùy thuộc vào người dùng bạn cần đặt và thời điểm và cách bạn muốn đặt. Một phần quyết định của bạn sẽ là liệu bạn muốn đặt biến môi trường cho tất cả người dùng hay trên cơ sở mỗi người dùng. Nếu bạn không chắc chắn, thì tôi khuyên bạn nên đặt nó cho chỉ một người dùng (ví dụ: tài khoản của bạn) thay vì toàn hệ thống.
Như AlexP nói , PATHbiến môi trường sẽ có giá trị được gán gần đây nhất . Trong thực tế, hầu hết thời gian bạn đặt PATH, bạn bao gồm giá trị cũPATH trong giá trị mới, để các mục trước đó được giữ lại.
Vì vậy, trong thực tế, khi PATHđược đặt từ nhiều tệp, nó thường chứa các mục được đưa ra trong tất cả các tệp. Nhưng điều đó chỉ xảy ra bởi vì tất cả các tệp đặt nó, ngoại trừ tệp đầu tiên, thường tham chiếu PATHchính biến đó, khiến giá trị cũ của nó được bao gồm giá trị mới.
Do đó, bạn đang có hiệu lực yêu cầu thứ tự PATHcài đặt trong các tệp khác nhau có hiệu lực.
Các vị trí phổ biến, mục đích chung để đặt PATHđược liệt kê bên dưới theo thứ tự chúng có hiệu lực khi người dùng đăng nhập, không theo thứ tự bạn thường nên xem xét sử dụng chúng . Mỗi địa điểm được liệt kê dưới đây là một lựa chọn hợp lý để thiết lập PATH trong một số tình huống , nhưng chỉ có một số ít là lựa chọn tốt trong hầu hết thời gian.
Trong danh sách dưới đây, bạn sẽ thấy một số tên thư mục như thế nào ~/.profile. Trong trường hợp bạn không quen với việc mở rộng dấu ngã , hãy ~/tham khảo thư mục chính của người dùng hiện tại. Tôi chủ yếu sử dụng cú pháp này cho sự gọn nhẹ. Nó được hỗ trợ trong các kịch bản shell, nhưng không phải trong các tệp cấu hình PAM.
/etc/environmentPAM trên Ubuntu khiến các biến môi trường được liệt kê /etc/environmentđược đặt, nếu tệp đó tồn tại, theo mặc định nó có. Đó là cách các biến môi trường cho tất cả người dùng được đặt phổ biến nhất.
$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Nếu bạn phải đặt các biến môi trường cho tất cả các tài khoản người dùng, thay vì chỉ tài khoản người dùng của bạn, thì việc sửa đổi tệp đó có thể là lựa chọn tốt nhất của bạn. Tôi khuyên bạn nên sao lưu nó trước. Một cách để sao lưu tệp này là chạy:
sudo cp /etc/environment /etc/environment.orig
Các .origphần mở rộng không được yêu cầu cụ thể - bạn có thể cảm thấy tốt về đặt tên cho các tập tin sao lưu bất cứ điều gì đó là không gây nhầm lẫn hoặc đã được sử dụng. (Bên cạnh đó .orig, .old, .backupvà .bakrất phổ biến.)
Bạn có thể chỉnh sửa tập tin này trong bất kỳ cách nào bạn có thể sửa đổi bất kỳ tập tin khác như là người dùng root ( sudoedit /etc/enviromnment, sudo nano -w /etc/environment, gksudo gedit /etc/environment, vv)
/etc/environmentkhông hỗ trợ bao gồm giá trị cũ của một biến tự động. Nhưng điều này thường không cần thiết, vì hầu hết thời gian bạn sẽ đặt biến môi trường cho tất cả người dùng bằng cách chỉnh sửa /etc/environment, dù sao bạn cũng muốn đó là giá trị ban đầu khi người dùng đăng nhập. Người dùng sau đó có thể thay đổi nó theo ý muốn. Thông thường nó là tốt cho người dùng để có thể làm điều này.
/etc/security/pam_env.confPAM đọc các biến môi trường cho tất cả người dùng từ /etc/security/pam_env.conf, được chỉ định với cùng một cú pháp như được sử dụng trong ~/.pam_environmentcác tệp cho mỗi người dùng (xem bên dưới).
Khi cùng một biến môi trường được đặt ở cả hai /etc/environmentvà /etc/security/pam_env.conf, giá trị trong pam_env.confđược sử dụng - ngay cả khi giá trị đó được chỉ định DEFAULTthay vì OVERRIDE.
Tuy nhiên, khi bạn thay thế một dòng environmentbằng một trong pam_env.conf, bạn có thể bao gồm nội dung của giá trị thay thế. Xem phần bên dưới .pam_environmentđể biết chi tiết (vì nó sử dụng cùng một cú pháp).
Thông thường không cần thiết phải chỉnh sửa pam_env.confvà bạn nên rất cẩn thận nếu có , vì một dòng không đúng định dạng thường sẽ ngăn tất cả các tài khoản người dùng bình thường đăng nhập! Ví dụ: mặc định pam_env.confchứa các dòng:
#PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
Điều này được trình bày như một trong một số ví dụ. Một trong những điều nó minh họa là làm thế nào để phân chia một bài tập trên nhiều dòng \. Giả sử bạn đã bỏ ghi chú chỉ dòng đầu tiên, nhưng quên bỏ ghi chú dòng thứ hai:
PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
Đừng làm điều này!
Tôi chỉ tự mình kiểm tra một cách tình cờ và nó đã ngăn bất kỳ người dùng nào đăng nhập thành công. Để khắc phục, tôi phải khởi động ở chế độ recovery và thay đổi lại. (May mắn là tôi đã làm điều này trên một máy ảo mà tôi chỉ sử dụng để thử nghiệm mọi thứ, vì vậy nó không gây rắc rối cho tôi.)
.pam_environmenttrong thư mục nhà của người dùngMột trong những cách để đặt biến môi trường cho một người dùng là cho người dùng đó chỉnh sửa (hoặc tạo) .pam_environmenttrong thư mục chính của họ. Các giá trị được đặt trong tệp này thay thế các giá trị được đặt trong /etc/environmenttệp chung.
.pam_environmentkhông phải là một phần của bộ tệp được sao chép vào thư mục nhà của người dùng khi tài khoản người dùng được tạo ban đầu. Tuy nhiên, nếu bạn tạo tệp đó trong thư mục chính của mình, bạn có thể sử dụng tệp đó để đặt các biến môi trường như thế nào PATH. Không giống như /etc/environment(nhưng giống như /etc/security/pam_env.conf), các .pam_environmenttệp trên mỗi người dùng hỗ trợ mở rộng giá trị cũ của biến môi trường thành một biến mới. Tuy nhiên, chúng không phải là các tập lệnh shell và bạn phải sử dụng một cú pháp đặc biệt để đạt được điều này, khác với cú pháp bạn sẽ sử dụng trong một tệp như thế nào .profile.
Ví dụ: nếu bạn có một bin2thư mục trong thư mục chính mà bạn muốn thêm vào cuối PATH, bạn có thể làm điều đó bằng cách thêm dòng này vào .pam_environment:
PATH DEFAULT=${PATH}:/home/@{PAM_USER}/bin2
Xem các ~/.pam_environmenttiểu mục của EnvironmentVariables (mà từ đó các ví dụ trên được điều chỉnh chặt chẽ), man pam_envvà man pam_env.confđể biết thêm chi tiết.
Mặc dù điều này đã từng được quảng cáo là cách ưa thích để người dùng Ubuntu thay đổi hoặc thêm các biến môi trường và vẫn được coi là lựa chọn hợp lý và có thể chấp nhận được, bạn nên cẩn thận khi chỉnh sửa.pam_environment . Giống như chỉnh sửa trên toàn hệ thống /etc/security/pam_env.conf(xem ở trên), một dòng không đúng trong .pam_environmenttệp của người dùng sẽ ngăn đăng nhập thành công. (Tôi đã thử nghiệm điều này - về mục đích lần này.) Để biết thông tin về cách các khuyến nghị đã phát triển , hãy xem ý kiến của Gunnar Hjalmarsson bên dưới và cuộc thảo luận này . ubuntu-devel
Nói chung , một lỗi như vậy ít nghiêm trọng hơn nhiều so với một dòng không đúng định dạng pam_env.conf, bởi vì nó chỉ ảnh hưởng đến một người dùng. Tuy nhiên, trong trường hợp hệ thống Ubuntu trên máy tính để bàn chỉ có một tài khoản người dùng cho phép đăng nhập, một lỗi như vậy trong khi chỉnh sửa .pam_environmentsẽ tệ như chỉnh sửa lỗi pam_env.conf- nếu bạn chưa đăng nhập, bạn sẽ không thể để sửa lỗi mà không cần khởi động trong chế độ khôi phục (hoặc từ USB trực tiếp, v.v.).
(Nếu bạn có tài khoản người dùng khác, thì bạn có thể đăng nhập với tư cách người dùng khác và khắc phục sự cố. Ngay cả khi họ không phải là quản trị viên và không sudothể root, họ vẫn có thể chạy và được nhắc nhập mật khẩu (không phải của họ) . các khách tài khoản, tuy nhiên, không thể làm được điều này, vì nó là bị cấm sử dụng để đưa vào danh tính của người dùng khác.)su your-accountsu
/etc/profilevà các tệp bên trong/etc/profile.d/Các shell tương thích Bourne (bao gồm cả bashshell người dùng mặc định trong Ubuntu) chạy các lệnh /etc/profilekhi được gọi làm shell đăng nhập.
Ubuntu /etc/profile.dkết thúc bằng:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
Điều này gây ra các lệnh trong bất kỳ tệp nào trong /etc/profile.d/thư mục có tên kết thúc cũng .shđược chạy.
Hầu hết các trình quản lý hiển thị khiến các lệnh trong /etc/profile(và do đó các tệp trong /etc/profile.d) cũng được chạy để đăng nhập đồ họa. Tuy nhiên, không phải tất cả đều như vậy, và đó là một đối số đáng kể ủng hộ việc sử dụng các phương tiện do PAM cung cấp thay vào đó (xem ở trên) - trừ khi sẽ không bao giờ có bất kỳ thông tin đăng nhập đồ họa nào cho hệ thống này, ví dụ, có thể là trường hợp đó một máy chủ không cài đặt GUI.
Đó là truyền thống để đặt các biến môi trường toàn hệ thống /etc/profile, nhưng đây thường không phải là lựa chọn tốt nhất nữa. Nếu bạn không thể đặt biến môi trường /etc/environmentvà bạn phải đặt biến cho tất cả người dùng, thì có lẽ tốt hơn là tạo một tệp mới /etc/profile.d/hơn là /etc/profiletự chỉnh sửa . Một lý do cho điều này là, khi Ubuntu được nâng cấp, có thể có một /etc/profiletệp mặc định mới . Tùy thuộc vào cách bạn thực hiện nâng cấp, tệp cũ (với các thay đổi của bạn) sẽ được giữ lại, từ bỏ tệp cấu hình được cập nhật cụ thể đó, hoặc bạn sẽ được nhắc xử lý tình huống.
Khi cùng một biến môi trường được đặt trong cả hai /etc/profilevà một hoặc nhiều tệp trong /etc/profile.dđó, được thực hiện sau cùng? Điều này phụ thuộc vào việc các lệnh trong /etc/profiletập hợp đó xuất hiện trước hay sau khi các tệp trong đó profile.dcó nguồn gốc (theo mã tôi đã trích dẫn ở trên). Các lệnh trong /etc/profileđược thực hiện theo thứ tự chúng xuất hiện.
/etc/profilelà một tập lệnh shell và cú pháp của nó không giống với tập lệnh cấu hình PAM đã thảo luận ở trên . Cú pháp của nó giống như cú pháp của ~/.profiletệp theo người dùng (xem bên dưới).
Nếu bạn cần viết mã quyết định có thêm thư mục cụ thể vào PATH(và làm như vậy cho tất cả người dùng) hay không, bạn sẽ không thể sử dụng /etc/environmenthoặc /etc/security/pam_env.confthực hiện điều đó. Đây có lẽ là tình huống chính mà tốt hơn là sử dụng /etc/profilehoặc /etc/profile.d/thay vào đó.
.bash_profiletrong thư mục nhà của người dùngNếu người dùng có ~/.bash_profile, bash sử dụng nó thay vì ~/.profilehoặc ~/.bash_login(xem bên dưới). Bạn thường không nên có một .bash_profiletrong thư mục nhà của bạn.
Nếu bạn làm như vậy, nó thường phải chứa một lệnh tới nguồn ~/.profile(ví dụ . "$HOME/.profile":). Mặt khác, nội dung của .profiletệp trên mỗi người dùng hoàn toàn không chạy.
.bash_logintrong thư mục nhà của người dùngNếu người dùng có ~/.bash_login, bash sử dụng nó thay vì ~/.profile(xem bên dưới), trừ khi ~/.bash_profiletồn tại, trong trường hợp đó, cả hai người khác sẽ không được sử dụng trừ khi có nguồn gốc từ `~ / .bash_login.
Như với .bash_profile, bạn thường không nên có một .bash_logintập tin trong thư mục nhà của bạn.
.profiletrong thư mục nhà của người dùng.Khi shell kiểu Bourne được chạy dưới dạng shell đăng nhập, nó sẽ chạy các lệnh trong /etc/profile(thường bao gồm các lệnh khiến các lệnh trong tệp /etc/profile.d/được chạy - xem ở trên). Sau đó, nó chạy các lệnh trong .profilethư mục nhà của người dùng. Tập tin này là riêng biệt cho mọi người dùng. (Bash thực sự chạy .bash_profilehoặc .bash_loginthay vào đó nếu chúng tồn tại - nhưng, đối với người dùng trên hệ thống Ubuntu, những tệp đó hiếm khi nên hoặc tồn tại. Để biết chi tiết, xem ở trên và 6.2 Bash Startup Files trong hướng dẫn Bash .)
~/.profiledo đó, là nơi chính để người dùng đặt các lệnh chạy khi họ đăng nhập. Đây là nơi truyền thống để bạn thiết lập PATH, nhưng vì Ubuntu có mô-đun pam_env và hỗ trợ ~/.pam_environment, bạn nên cân nhắc sử dụng nó.
Như với /etc/profile, không phải tất cả các trình quản lý hiển thị đều chạy tệp này để đăng nhập đồ họa, mặc dù hầu hết đều làm như vậy. Đây là một lý do để thích ~/.pam_environmentcho việc thiết lập các biến môi trường (giống như người ta có thể thích /etc/environmentđể /etc/profile).
Bạn có thể mở rộng các biến môi trường, bao gồm PATHchính nó, khi bạn đặt PATHvào .pam_environment(xem bên trên). Tuy nhiên, nếu bạn cần thiết lập PATHmột cách tinh vi hơn, bạn có thể phải sử dụng .profilethay thế. Cụ thể, nếu bạn muốn kiểm tra xem một thư mục có tồn tại mỗi khi người dùng đăng nhập và chỉ thêm nó vào PATHnếu có, thì bạn sẽ không thể sử dụng .pam_environmenttệp của mình để thêm thư mục đó vào PATH.
Ví dụ: .profiletệp theo người dùng mặc định trên Ubuntu được sử dụng để kết thúc bằng:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Xem bình luận của Gunnar Hjalmarsson về câu trả lời của Byte Commander để biết chi tiết.
Điều này kiểm tra nếu bạn có một binthư mục con của thư mục nhà của bạn. Nếu vậy, nó thêm thư mục con đó vào đầu của bạn PATH.
Có nhiều cách khác để biến môi trường được đặt khi người dùng đăng nhập phụ thuộc nhiều vào loại đăng nhập. Ví dụ: đôi khi bạn có thể có các biến môi trường được đặt chỉ để đăng nhập đồ họa hoặc chỉ cho đăng nhập từ xa dựa trên SSH. Danh sách trên không bao gồm các trường hợp như vậy.
Tôi đã bỏ qua một vài tệp trong đó mọi người đôi khi xác định các biến môi trường, như ~/.bashrcvà /etc/bash.bashrc, vì chúng thường không được đề xuất để đặt PATHvà rất hiếm khi bạn thực sự nên sử dụng chúng cho mục đích này. Nếu bạn sử dụng các tệp này để thêm thư mục vào PATHthì đôi khi chúng sẽ được thêm nhiều lần và rất khó hiểu khi bạn kiểm tra $PATH. (Trong trường hợp cực đoan, điều này có thể làm mọi thứ chậm lại, nhưng thường thì đó chỉ là vấn đề giữ mọi thứ sạch sẽ và dễ hiểu.)
Vì bashshell đăng nhập mặc định của Ubuntu cho người dùng và hầu hết người dùng sử dụng nó hoặc một số shell tương thích POSIX khác, tôi đã bỏ qua thông tin về cách các biến môi trường được đặt trong các shell khác, không phải kiểu Bourne, chẳng hạn như tcsh.
/etc/environment/ ~/.pam_environmentnhư các tệp được đề xuất. Sau khi tham khảo ý kiến của các nhà phát triển, tôi đã thay đổi nó thành trung lập giữa PAM và /etc/profile.d/*.sh/ ~/.profile, và tôi vẫn có xu hướng nhìn nó theo cách đó.
/etc/profile.d/*.sh/ ~/.profilelà cú pháp đơn giản hơn và lightdm / gdm đang tha thứ trong trường hợp có lỗi (thậm chí không có lỗi cú pháp ngăn bạn đăng nhập, nhưng chỉ dẫn đến các thông báo cảnh báo).
pam_env.so, ý của bạn là pam_env.confgì?
pam_env.conf. Cảm ơn! Tôi đã chỉnh sửa để sửa nó.
/ etc / tệp môi trường không phải là tệp tập lệnh mà bạn không thể sử dụng xuất ở đó và nó không hỗ trợ mở rộng biến loại $ HOME, chỉ đơn giản là các cặp giá trị. Vì vậy, để sử dụng tệp đó, bạn chỉ cần nối thêm đường dẫn của mình vào định nghĩa hiện có, đặc biệt dành cho cài đặt biến môi trường toàn hệ thống. Một trên mỗi dòng. Cụ thể, tệp này lưu trữ cài đặt đường dẫn và miền địa phương trên toàn hệ thống.
~ / .profile - Tập tin này được thực hiện bất cứ khi nào một vỏ bash được thực thi, thường được khuyên dùng cho các biến môi trường, tuy nhiên nó có nhược điểm là chỉ được gọi bởi vỏ đăng nhập, vì vậy để làm cho nó có hiệu lực, bạn sẽ cần để đăng xuất và đăng nhập lại - hoặc ít nhất, hãy bắt đầu một vỏ đăng nhập mới.
Vị trí ưa thích để đặt các biến môi trường phụ thuộc vào một số điều:
/etc/environmentvì không có nguy cơ truy cập _unauthorized./etc/environment, nhưng~/.profilengười dùng nên đặt quyền truy cập cho từng người dùng của hệ thống vì nó nằm trong mỗi thư mục nhà của người dùng.Hệ thống sẽ đọc /etc/environmenttrước khi đọc ~/.profile. Không có sự kết hợp nào xảy ra và như Alex P cho biết nhiệm vụ cuối cùng cho con đường chiếm ưu thế.
Để xem chi tiết hơn về các yếu tố xác định cách thức ~/.profilevà /etc/environmentgiải quyết với các vị trí khác như vậy hãy đến đây và đây , vì các yếu tố này sẽ ảnh hưởng đến cách bạn sử dụng các vị trí này.