PATH
envvar 를 설정하기 위해 선호되는 장소는 어디 입니까?
~/.profile
또는 /etc/environment
?
PATH
두 장소에 모두 설정되어 있는 경우 는 어떻게됩니까? 최종 결과가 두 장소에서 설정된 두 값의 연결입니까?
PATH
envvar 를 설정하기 위해 선호되는 장소는 어디 입니까?
~/.profile
또는 /etc/environment
?
PATH
두 장소에 모두 설정되어 있는 경우 는 어떻게됩니까? 최종 결과가 두 장소에서 설정된 두 값의 연결입니까?
답변:
요약:
컴퓨터의 모든 사용자가 아닌 현재 사용자 /your/additional/path
의 PATH
변수에 경로 (예 :)를 추가 하려면 일반적으로 ~/.profile
다음 두 예제 중 하나와 같이 끝에 경로를 넣으십시오 .
PATH="/your/additional/path:$PATH"
PATH="$PATH:/your/additional/path"
경로 우선 순위는 왼쪽에서 오른쪽으로 내림차순이므로 첫 번째 경로의 우선 순위가 가장 높습니다. 왼쪽에 경로를 추가하면 해당 경로의 $PATH
우선 순위가 가장 높으며 해당 위치의 실행 파일이 다른 모든 경로보다 우선합니다. 오른쪽에 경로를 추가하면 우선 순위가 가장 낮아지고 다른 위치의 실행 파일이 선호됩니다.
모든 사용자에 대해 해당 환경 변수를 설정해야하는 경우에는, 나는 아직도 감동 권하고 싶지 않다 /etc/environment
그러나 파일 이름에서 끝나는 파일 생성 .sh
에를 /etc/profile.d/
. /etc/profile
스크립트의 모든 스크립트는 /etc/profile.d
각 사용자의 개인의 글로벌 동일 ~/.profile
과 초기화하는 동안 모든 쉘에 의해 정기적으로 쉘 스크립트로 실행.
자세한 세부 사항:
/etc/environment
시스템 전체 구성 파일이므로 모든 사용자가 사용합니다. 그러나 소유하고 root
있기 때문에 관리자 여야하며 sudo
수정에 사용해야 합니다.
~/.profile
사용자 자신의 개인 쉘 초기화 스크립트 중 하나입니다. 모든 사용자는 하나를 가지며 다른 사용자에게 영향을주지 않고 파일을 편집 할 수 있습니다.
/etc/profile
와 /etc/profile.d/*.sh
동등한 글로벌 초기화 스크립트입니다 ~/.profile
각 사용자는. 전역 스크립트는 사용자 별 스크립트보다 먼저 실행됩니다. 메인 /etc/profile
은 모든 *.sh
스크립트를 /etc/profile.d/
종료하기 직전에 실행합니다 .
/etc/environment
파일은 일반적으로 전용이 줄을 포함 :
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
그것은 설정 PATH
의 주요 방법으로 변경할 수 없습니다이 기본값으로 시스템의 모든 사용자에 대한 변수를. 적어도 당신은 같은 중요한 경로의 제거 안 /bin
, /sbin
, /usr/bin
그리고 /usr/sbin
그것에서합니다.
이 파일은 모든 사용자의 모든 쉘에서 첫 번째 구성 파일 중 하나로 읽습니다. 쉘 스크립트 가 아닙니다 . 그것은 어떻게 든 구문 분석되고 환경 변수 할당 만 포함 할 수있는 구성 파일입니다!
~/.profile
파일이 있는지 여부는 다른 것들 사이에 수표를 포함 기본적으로 많은 것을 포함 할 수있는 ~/bin
디렉토리가 존재하고 사용자의 기존 해당 추가 PATH
(우분투 16.04 이전에 출시 나이에 - 새로운 출시 무조건 추가)과 같이 변수 :
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
이전 값이 PATH
여기에서 재사용되고 새 경로는 모든 것을 덮어 쓰는 대신 처음에 추가됩니다. 새 경로를 수동으로 추가하려는 경우 항상 $PATH
새 문자열의 어딘가에 이전 값을 유지해야 합니다.
이 초기화 스크립트는 자신이 속한 사용자의 쉘에서만 읽지 만 다른 조건이 있습니다.
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
기본 bash 쉘을 사용하는 경우 따라서, 당신은 당신이없는 것을 확인해야한다 ~/.bash_profile
또는 ~/.bash_login
당신이 변화를 원하는 경우에 ~/.profile
사용자에 대한 영향을 미칠 수 있습니다.
환경 변수에 대한 자세한 내용은 https://help.ubuntu.com/community/EnvironmentVariables를 참조하십시오.
~/.profile
의 존재를 확인하지 않습니다 ~/bin
, 그러나 그것은 단순히 라인을 가지고 :PATH="$HOME/bin:$HOME/.local/bin:$PATH"
/etc/skel/.profile
16.04에는 내가 언급 한 줄이 있습니다. 이전 릴리스에서 사용자를 만든 것 같습니다.
~/.profile
여전히이 기능이 있다고 생각 했지만 /etc/skel/.profile
업그레이드 된 16.04 시스템 (및 16.04를 설치할 때 생성 된 사용자 계정)에는 없습니다 다른 컴퓨터에는 해당 컴퓨터가 없습니다 .profile
).
이 답변은 주로 다른 구성 파일에 지정 될 때 와 같은 환경 변수
PATH
가 할당 되는 순서에 관한 것 입니다. 또한 일반적으로 설정해야하는 위치도 다루지 만 아래 목록에는 파일 사용을 고려해야하는 순서대로 파일이 나열되어 있지 않습니다.PATH
우분투의 설정 및 기타 환경 변수에 대한 일반적인 정보는 EnvironmentVariables 및이 질문에 대한 다른 답변을 읽는 것이 좋습니다 .
선호하는 설정 장소는 설정 해야하는 사용자 및 설정 시기 및 방법PATH
에 따라 다릅니다 . 결정의 일부는 모든 사용자에 대해 환경 변수 세트를 원하는지 또는 사용자별로 설정할 것인지입니다. 확실하지 않은 경우 시스템 전체가 아닌 한 명의 사용자 (예 : 계정)에 대해서만 설정하는 것이 좋습니다.
으로 AlexP 말한다 는 PATH
환경 변수가 된 값이됩니다 가장 최근에 할당을 . 실제로 대부분 의 시간을 설정 PATH
하면 이전 값이 PATH
새 값에 포함되어 이전 항목이 유지됩니다.
따라서 실제로 PATH
여러 파일에서 설정하면 일반적으로 모든 파일에 지정된 항목이 포함됩니다. 그러나 첫 번째 파일을 제외한 모든 파일은 일반적으로 PATH
변수 자체를 참조하여 이전 값이 새 값을 포함하기 때문에 발생합니다.
따라서 PATH
다양한 파일의 설정이 적용 되는 순서를 요구하고 있습니다.
일반적인 범용 설정 위치 PATH
는 사용자 가 일반적으로 사용하는 순서가 아닌 사용자가 로그인 할 때 적용되는 순서대로 아래에 나열되어 있습니다 . 아래 나열된 각 장소 PATH
는 일부 상황 에서 설정하기 에 적합한 선택 이지만 대부분의 경우 좋은 선택은 거의 없습니다.
아래 목록에는과 같은 디렉토리 이름이 ~/.profile
있습니다. 당신이 익숙하지 않은 경우 틸드 확장 , ~/
현재 사용자의 홈 디렉토리를 나타냅니다. 나는 주로 압축을 위해이 구문을 사용합니다. 쉘 스크립트에서는 지원되지만 PAM 구성 파일 에서는 지원 되지 않습니다 .
/etc/environment
Ubuntu의 PAM/etc/environment
은 파일이 존재하는 경우 나열된 환경 변수 가 기본적으로 설정되도록합니다. 모든 사용자의 환경 변수가 가장 일반적으로 설정되는 방식입니다.
$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
사용자 계정이 아닌 모든 사용자 계정에 환경 변수를 설정해야하는 경우 해당 파일을 수정하는 것이 가장 좋습니다. 먼저 백업하는 것이 좋습니다. 이 파일을 백업하는 한 가지 방법은 다음을 실행하는 것입니다.
sudo cp /etc/environment /etc/environment.orig
.orig
당신이 혼란 이미 사용하지의 백업 파일 어떤 이름에 대해 좋은 느낌 수 - 확장은 특별히 필요하지 않습니다. (게다가 .orig
, .old
, .backup
및 .bak
일반적이다.)
당신은 (당신이 루트 사용자로 다른 파일을 편집 할 수있는 방법으로이 파일을 편집 할 수 있습니다 sudoedit /etc/enviromnment
, sudo nano -w /etc/environment
, gksudo gedit /etc/environment
, 등)
/etc/environment
변수의 이전 값을 자동으로 포함하는 것을 지원하지 않습니다. 그러나 이것은 일반적으로 불필요합니다. 대부분의 경우 편집하여 모든 사용자에 대한 환경 변수를 설정하기 /etc/environment
때문에 사용자가 로그인 할 때 초기 값이되기를 원할 것입니다. 그런 다음 사용자는 원하는대로 변경할 수 있습니다. 일반적으로 사용자가이를 수행하는 것이 좋습니다.
/etc/security/pam_env.conf
PAM은 /etc/security/pam_env.conf
사용자 별 ~/.pam_environment
파일 에서 사용 된 것과 동일한 구문으로 지정된 에서 모든 사용자에 대한 환경 변수를 읽습니다 (아래 참조).
같은 환경 변수를 모두 설정 한 경우 /etc/environment
와 /etc/security/pam_env.conf
, 상기 값이 pam_env.conf
사용된다 - 그 값으로 지정되는 경우에도 DEFAULT
보다는 OVERRIDE
.
그러나 in environment
과 함께 한 행을 대체 할 때는 pam_env.conf
대체 된 값의 내용을 포함 할 수 있습니다. 자세한 내용은 아래 섹션을 참조 .pam_environment
하십시오 (동일한 구문을 사용하므로).
그것은 편집하는 것이 필요는 없습니다 pam_env.conf
그리고 당신은 당신이 할 경우 매우 조심해야 하는부터 잘못된 일반적으로 모든 로그인에서 모든 일반 사용자 계정을 방지 할 수 있습니다 라인! 예를 들어, 기본값 pam_env.conf
에는 다음 줄이 포함됩니다.
#PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
이것은 몇 가지 예 중 하나로 제시됩니다. 설명 중 하나는을 사용하여 여러 줄에 할당을 분할하는 방법입니다 \
. 첫 번째 행의 주석을 해제했지만 두 번째 행의 주석을 해제하는 것을 잊었다 고 가정하십시오.
PATH DEFAULT=${HOME}/bin:/usr/local/bin:/bin\
#:/usr/bin:/usr/local/bin/X11:/usr/bin/X11
이러지 마!
방금 실수로 테스트 한 결과 모든 사용자가 성공적으로 로그인하지 못했습니다. 이 문제를 해결하려면 복구 모드로 부팅하고 다시 변경해야했습니다. (다행스럽게도 테스트를 위해서만 사용하는 가상 머신 에서이 작업을 수행 했으므로 아무런 문제가 발생하지 않았습니다.)
.pam_environment
사용자의 홈 디렉토리단일 사용자에 대한 환경 변수를 설정하는 방법 중 하나는 해당 사용자가 .pam_environment
홈 디렉토리에서 편집 (또는 작성) 하는 것입니다. 이 파일에 설정된 값이 글로벌 /etc/environment
파일에 설정된 값보다 우선 합니다.
.pam_environment
는 사용자 계정이 처음 만들어 질 때 사용자의 홈 폴더에 복사되는 파일 골격의 일부가 아닙니다. 그러나 홈 디렉토리에 해당 파일을 작성하면이 파일을 사용하여 다음과 같은 환경 변수를 설정할 수 있습니다 PATH
. (와 /etc/environment
마찬가지로 /etc/security/pam_env.conf
) 사용자 별 .pam_environment
파일은 환경 변수의 이전 값을 새로운 것으로 확장하는 것을 지원합니다. 그러나 셸 스크립트는 아니며 특수 구문을 사용하여이를 달성해야합니다 .profile
. 이는 파일에서 사용하는 구문과 약간 다릅니다 .
예를 들어, bin2
홈 디렉토리에 끝에 추가하려는 디렉토리가있는 PATH
경우이 행을 .pam_environment
다음 에 추가하면됩니다 .
PATH DEFAULT=${PATH}:/home/@{PAM_USER}/bin2
참조 항 중 하여 환경 (상기 예 밀접하도록 구성되는), 및 추가적인 세부 사항을.~/.pam_environment
man pam_env
man pam_env.conf
이것은 우분투 사용자가 환경 변수를 변경하거나 추가하는 데 선호되는 방법으로 선전되었지만 여전히 합리적이고 수용 가능한 선택으로 간주되지만 편집 할 때는주의해야합니다.pam_environment
. 시스템 전체에 대한 편집 /etc/security/pam_env.conf
(위 참조)과 같이 사용자 .pam_environment
파일 의 잘못된 행은 로그인이 성공하지 못하게합니다. (나는이 테스트 한 -. 일부러 시간) 방법에 대한 자세한 내용은 권고가 한 진화 참조 군나르 할말 슨 의 의견 은 아래 와 이 ubuntu-devel
토론 .
이러한 실수는 일반적으로pam_env.conf
한 명의 사용자에게만 영향을주기 때문에 잘못된 형식의 행보다 심각하지 않습니다 . 그러나 로그인을 허용하는 사용자 계정이 하나만있는 데스크탑 Ubuntu 시스템의 경우 편집하는 동안 .pam_environment
실수하는 것은 실수 편집하는 것만 큼 나쁩니다. pam_env.conf
아직 로그인하지 않은 경우에는 로그인 할 수 없습니다 복구 모드 (또는 라이브 USB 등)에서 부팅하지 않고 문제를 해결합니다.
(다른 사용자 계정이있는 경우 다른 사용자로 로그인하여 문제를 해결할 수 있습니다. 관리자가 아니고 루팅 할 수없는 경우에도 sudo
계속 실행 하고 자신의 비밀번호가 아닌 비밀번호를 입력하라는 메시지가 표시 될 수 있습니다. . 게스트 가 사용 금지로 계정은, 그러나,이 작업을 수행 할 수있는 다른 사용자의 ID에 걸릴 수 있습니다.)su your-account
su
/etc/profile
내부 파일/etc/profile.d/
Bourne 호환 쉘 ( bash
Ubuntu의 기본 사용자 쉘 포함 ) /etc/profile
은 로그인 쉘로 호출 될 때 명령을 실행합니다 .
우분투의 /etc/profile.d
끝 :
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
/etc/profile.d/
이름이 끝나는 디렉토리의 파일에있는 명령 .sh
도 실행됩니다.
대부분의 디스플레이 관리자 는 그래픽 로그인에 대한 명령 /etc/profile
(및에있는 파일 /etc/profile.d
)이 실행되도록합니다. 그러나 모든 것이 아니라 PAM에서 제공하는 기능을 대신 사용하는 것이 유리한 주장입니다 (위 참조). 예를 들어,이 시스템에 그래픽 로그인이없는 경우가 아니라면 GUI가 설치되지 않은 서버
에 시스템 전체 환경 변수를 설정 /etc/profile
하는 것이 일반적이지만 더 이상 최선의 선택이 아닙니다. 에서 환경 변수를 설정할 수없고 /etc/environment
모든 사용자에 대해 환경 변수를 설정해야하는 /etc/profile.d/
경우 /etc/profile
자체 파일 을 편집하는 것 보다 새 파일을 만드는 것이 좋습니다 . 그 이유 중 하나는 Ubuntu가 업그레이드 될 때 새로운 기본 /etc/profile
파일 이있을 수 있기 때문 입니다. 업그레이드 수행 방법에 따라 이전 파일 (변경 사항 포함)이 특정 업데이트 된 구성 파일보다 먼저 유지되거나 상황을 처리하라는 메시지가 표시됩니다.
에서 동일한 환경 변수가 /etc/profile
하나 이상의 파일에 설정 /etc/profile.d
되면 마지막으로 수행되는 것은 무엇입니까? 이것은 /etc/profile
해당 세트 의 명령 이 파일의 profile.d
소스 이전 또는 이후에 나타나는지 여부에 달려 있습니다 (위에서 인용 한 코드로). 명령은 /etc/profile
표시된 순서대로 실행됩니다.
/etc/profile
쉘 스크립트이며, 구문은 하지 상술 PAM 구성 파일과 동일 . 구문은 사용자 별 ~/.profile
파일 의 구문과 동일 합니다 (아래 참조).
특정 디렉토리를 추가할지 여부 를 결정 하는 코드를 작성해야하는 경우 PATH
(모든 사용자 에게 추가 해야하는 경우) 해당 디렉토리 를 사용 /etc/environment
하거나 /etc/security/pam_env.conf
수행 할 수 없습니다 . 이것은 아마도 사용 /etc/profile
하거나 /etc/profile.d/
대신 하는 것이 더 나은 주요 상황 일 것입니다.
.bash_profile
사용자의 홈 디렉토리사용자 ~/.bash_profile
가을 가지고 있다면 bash는 ~/.profile
또는 대신에을 사용합니다 ~/.bash_login
(아래 참조). 일반적으로 .bash_profile
홈 디렉토리 에는 없어야합니다 .
그럴 경우, 일반적으로 소스 ~/.profile
(예 :)에 대한 명령을 포함해야합니다 . "$HOME/.profile"
. 그렇지 않으면 사용자 별 .profile
파일 의 내용 이 전혀 실행되지 않습니다.
.bash_login
사용자의 홈 디렉토리만약 사용자 ~/.bash_login
가을 가지고 있다면 , bash는 존재 ~/.profile
하지 않는 한 (아래 참조) 대신 bash를 사용합니다 ~/.bash_profile
.이 경우`~ / .bash_login에서 소스하지 않으면 다른 것들은 사용되지 않습니다.
에서와 마찬가지로 .bash_profile
일반적으로 .bash_login
홈 디렉토리에 파일 이 없어야합니다 .
.profile
사용자의 홈 디렉토리에 있습니다.Bourne 스타일 쉘이 로그인 쉘로 실행되면 명령이 실행됩니다 /etc/profile
(일반적으로 파일의 명령을 실행시키는 명령이 포함됩니다 ( /etc/profile.d/
위 참조)). 그 후, .profile
사용자의 홈 디렉토리에서 명령을 실행합니다 . 이 파일은 모든 사용자마다 다릅니다. (Bash는 실제로 실행 .bash_profile
되거나 .bash_login
존재하는 경우 대신 실행 되지만 Ubuntu 시스템 사용자의 경우 해당 파일이 거의 존재하지 않거나 존재하지 않습니다. 자세한 내용 은 Bash 매뉴얼의 6.2 Bash 시작 파일 을 참조하십시오 .)
~/.profile
따라서 사용자가 로그온 할 때 실행되는 명령을 넣을 수있는 주요 위치입니다. 이곳은 전통적인 장소 PATH
이지만, 우분투에는 pam_env 모듈과 지원 기능이 있으므로이를 ~/.pam_environment
사용하는 것이 좋습니다.
와 마찬가지로 /etc/profile
, 모든 디스플레이 관리자가 그래픽 로그인을 위해이 파일을 실행하는 것은 아니지만 대부분의 경우입니다. 이것은 선호하는 이유는 ~/.pam_environment
환경 변수를 설정 (하나가 선호하는 수만큼 /etc/environment
에 /etc/profile
).
당신은 다음과 같은 환경 변수를 확장 할 수 있습니다 PATH
설정 한 경우, 자체 PATH
에서 .pam_environment
(위 참조). 그러나 PATH
보다 정교한 방식으로 설정해야하는 경우 .profile
대신 이를 사용해야합니다 . 특히, 사용자가 로그인 할 때마다 디렉토리가 있는지 확인하고있는 경우에만 디렉토리를 추가하려는 PATH
경우 .pam_environment
파일을 사용하여 해당 디렉토리를에 추가 할 수 없습니다 PATH
.
예를 들어, 기본 사용자 별 .profile
우분투에 파일 을 사용 하여 종료 :
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
자세한 내용 은 Byte Commander의 답변에 대한 Gunnar Hjalmarsson 의 의견 을 참조하십시오.
bin
홈 디렉토리 의 서브 디렉토리 가 있는지 확인합니다 . 그렇다면 해당 하위 디렉토리를의 시작 부분에 추가합니다 PATH
.
사용자가 로그인 할 때 환경 유형이 설정되는 다른 방법은 로그인 유형에 더 크게 의존합니다. 예를 들어, 그래픽 로그인 또는 SSH 기반 원격 로그인에 대해서만 설정되는 환경 변수가있을 수 있습니다. 위의 목록은 그러한 경우를 다루지 않습니다.
나는 사람들이 가끔 같은 환경 변수를 정의하는 몇 개의 파일을 떠 났어요 ~/.bashrc
하고 /etc/bash.bashrc
, 그들은 일반적으로 설정하는 장소를 추천하지 않기 때문에 PATH
그것을 당신이 실제로이 목적을 위해 사용할 것이 드물다. 이 파일을 사용하여 디렉토리를 추가 PATH
하면 때때로 여러 번 추가되어 검사 할 때 매우 혼란스러워 $PATH
집니다. 극단적 인 경우 속도가 느려질 수 있지만 일반적으로 모든 것을 깨끗하고 이해하기 쉽게 유지해야합니다.
bash
사용자를위한 Ubuntu의 기본 로그인 셸 이므로 대부분의 사용자가이를 사용하거나 다른 POSIX 호환 셸을 사용하기 때문에 tcsh
.
/etc/environment
/ ~/.pam_environment
로 추천 파일. 개발자들과상의 한 후 PAM과 / 사이에서 중립으로 변경했지만 여전히 그렇게 생각하는 경향이 있습니다. /etc/profile.d/*.sh
~/.profile
/etc/profile.d/*.sh
/ 에 대한 중요한 주장 ~/.profile
은 구문이 더 간단하고 오류가 발생할 경우 lightdm / gdm이 용서한다는 것입니다 (구문 오류조차도 로그인을 방해하지 않고 경고 메시지 만 표시 함).
pam_env.so
, 당신은 의미 pam_env.conf
했습니까?
pam_env.conf
. 감사! 수정하기 위해 편집했습니다.
/ etc / environment 파일은 내보내기를 사용할 수없는 스크립트 파일이 아니며 $ HOME 유형의 변수 확장을 지원하지 않으며 simplevariable = value 쌍만 지원합니다. 따라서 해당 파일을 사용하려면 단순히 기존 정의에 경로를 추가해야합니다. 시스템 전체 환경 변수 설정을위한 것입니다. 한 줄에 하나씩. 특히이 파일은 시스템 전체 로캘 및 경로 설정을 저장합니다.
~ / .profile- 이 파일은 bash 쉘이 실행될 때마다 실행되며 일반적으로 환경 변수에 권장되는 것이지만 로그인 쉘에 의해서만 호출되는 단점이 있으므로 적용하려면 효과가 필요합니다. 로그 아웃했다가 다시 로그인하거나 최소한 새 로그인 쉘을 시작하십시오.
환경 변수 를 설정하기 위해 선호되는 장소 는 여러 가지에 따라 다릅니다.
/etc/environment
는 _ 무단 액세스의 위험이 없기 때문입니다./etc/environment
이지만~/.profile
이 각 사용자의 홈 디렉토리에 위치하고 있기 때문에 시스템의 각 사용자에 관한.시스템은 읽기 /etc/environment
전에 읽습니다 ~/.profile
. 연결이 발생 하지 않으며 Alex P가 말한 것처럼 경로에 대한 마지막 할당 이 우선합니다.
방법을 결정하는 요소에 대한 상세한 설명을 위해 ~/.profile
및 /etc/environment
이동 등의 위치 함께 연주 여기 와 여기에 당신이이 위치를 사용하는 방법이 요인이 영향을 미칠 것 같이.