Đâu là nơi ưa thích để đặt PATH
envvar?
~/.profile
hay /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 PATH
envvar?
~/.profile
hay /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 PATH
biế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 ~/.profile
mộ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/environment
mà tạo một tệp có tên tệp kết thúc .sh
bằng /etc/profile.d/
. Tập /etc/profile
lệnh và tất cả các tập lệnh trong /etc/profile.d
tương đương toàn cầu của mỗi cá nhân người dùng ~/.profile
và đượ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/environment
là 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 root
mặ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ó.
~/.profile
là 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/profile
và /etc/profile.d/*.sh
là các tập lệnh khởi tạo toàn cầu tương đương ~/.profile
vớ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/profile
thực thi tất cả các *.sh
tập lệnh /etc/profile.d/
ngay trước khi nó thoát.
Các /etc/environment
tậ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 PATH
biế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/bin
và /usr/sbin
từ 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 ~/.profile
tậ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 ~/bin
thư mục tồn tại và bổ sung thêm rằng để tồn tại của người dùng PATH
thay đổ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ữ $PATH
giá 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_profile
hoặc ~/.bash_login
nếu bạn muốn các thay đổi ~/.profile
có ả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
~/.profile
không kiểm tra sự tồn tại của ~/bin
nó, nhưng nó chỉ đơn giản là có dòng:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
/etc/skel/.profile
trong 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.
~/.profile
vẫn có cái này, nhưng bạn nói đúng - /etc/skel/.profile
khô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 đặtPATH
và 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 PATH
tù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 , PATH
biế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 PATH
chí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ự PATH
cà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/environment
PAM 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 .orig
phầ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
, .backup
và .bak
rấ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/environment
khô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.conf
PAM đọ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_environment
cá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/environment
và /etc/security/pam_env.conf
, giá trị trong pam_env.conf
được sử dụng - ngay cả khi giá trị đó được chỉ định DEFAULT
thay vì OVERRIDE
.
Tuy nhiên, khi bạn thay thế một dòng environment
bằ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.conf
và 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.conf
chứ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_environment
trong 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_environment
trong 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/environment
tệp chung.
.pam_environment
khô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_environment
tệ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 bin2
thư 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_environment
tiểu mục của EnvironmentVariables (mà từ đó các ví dụ trên được điều chỉnh chặt chẽ), man pam_env
và 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_environment
tệ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_environment
sẽ 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 sudo
thể 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-account
su
/etc/profile
và các tệp bên trong/etc/profile.d/
Các shell tương thích Bourne (bao gồm cả bash
shell người dùng mặc định trong Ubuntu) chạy các lệnh /etc/profile
khi được gọi làm shell đăng nhập.
Ubuntu /etc/profile.d
kế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/environment
và 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/profile
tự 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/profile
tệ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/profile
và 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/profile
tập hợp đó xuất hiện trước hay sau khi các tệp trong đó profile.d
có 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/profile
là 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 ~/.profile
tệ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/environment
hoặc /etc/security/pam_env.conf
thự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/profile
hoặc /etc/profile.d/
thay vào đó.
.bash_profile
trong 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ì ~/.profile
hoặc ~/.bash_login
(xem bên dưới). Bạn thường không nên có một .bash_profile
trong 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 .profile
tệp trên mỗi người dùng hoàn toàn không chạy.
.bash_login
trong 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_profile
tồ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_login
tập tin trong thư mục nhà của bạn.
.profile
trong 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 .profile
thư 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_profile
hoặc .bash_login
thay 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 .)
~/.profile
do đó, 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_environment
cho 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 PATH
chính nó, khi bạn đặt PATH
vào .pam_environment
(xem bên trên). Tuy nhiên, nếu bạn cần thiết lập PATH
một cách tinh vi hơn, bạn có thể phải sử dụng .profile
thay 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 PATH
nếu có, thì bạn sẽ không thể sử dụng .pam_environment
tệp của mình để thêm thư mục đó vào PATH
.
Ví dụ: .profile
tệ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 bin
thư 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ư ~/.bashrc
và /etc/bash.bashrc
, vì chúng thường không được đề xuất để đặt PATH
và 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 PATH
thì đô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ì bash
shell đă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_environment
như 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
/ ~/.profile
là 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.conf
gì?
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/environment
vì không có nguy cơ truy cập _unauthorized./etc/environment
, nhưng~/.profile
ngườ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/environment
trướ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 ~/.profile
và /etc/environment
giả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.