이 기사는 프로그램 개발 환경, 일반적인 명령 및 환경 변수에 대한 지식을 포함하여 Linux 운영 체제에 대한 기본 지식을 제공합니다.
Linux는 자유롭게 재배포 가능한 UNIX와 유사한 커널 구현입니다. 이는 운영 체제의 기본 핵심입니다. Linux는 핀란드 헬싱키 대학의 Linus가 인터넷상의 수많은 UNIX 프로그래머의 도움을 받아 개발했습니다. 원래는 교수님의 Minix(작은 UNIX와 유사한 시스템)에서 영감을 받은 프로그램이었지만, 나중에는 점차 그 자체로 완전한 시스템으로 발전했습니다.
Linux가 무엇인지 이해하려면 먼저 시스템을 이해해야 합니다. Linux 이전 애플리케이션인 UNIX 및 GNU 소프트웨어.
UNIX 운영 체제는 원래 당시 통신 대기업 AT&T(American Telegraph and Telephone Company)의 일원이었던 Bell Labs에서 개발되었습니다. 오늘날 이는 매우 인기 있는 다중 사용자, 다중 작업 운영 체제가 되었습니다. UNIX 운영 체제는 PC에서 다중 프로세서 서버 및 슈퍼컴퓨터에 이르기까지 다양한 하드웨어 플랫폼에서 실행될 수 있습니다.
UNIX에는 프로그램 개발의 몇 가지 일반적인 스타일과 특징이 있습니다.
1) 단순성: 많은 유용한 UNIX 도구는 매우 간단합니다. "작고 단순한 것"은 배울 가치가 있는 기술입니다. 더 크고 복잡한 시스템에는 더 크고 복잡한 버그가 포함될 수밖에 없습니다.
2) 중앙 집중화: 모든 기능을 한꺼번에 쌓는 것보다 프로그램이 하나의 작업을 잘 수행하도록 하는 것이 더 좋습니다. 기능이 비대해진 프로그램은 사용 및 유지 관리가 어렵고, 단일 목표 프로그램은 더 나은 알고리즘이 개발될수록 개선될 가능성이 더 높습니다. UNIX에서는 사용자로부터 새로운 요구 사항이 발생할 때 일반적으로 사용자가 기대하는 모든 기능을 큰 프로그램에 넣기보다는 작은 도구를 결합하여 더 복잡한 작업을 완료합니다.
3) 재사용 가능한 구성 요소: 애플리케이션의 핵심을 라이브러리로 구현합니다. 간단하고 유연한 프로그래밍 인터페이스를 갖춘 라이브러리는 다른 사람들이 유사한 프로그램을 개발하거나 이러한 기술을 새로운 응용 분야에 적용하는 데 도움을 줄 수 있습니다.
운영 체제 커널을 갖는 것만으로는 충분하지 않습니다. 오늘날의 Linux 개발은 수많은 사람들의 공동 노력의 결과입니다. 운영 체제 커널 자체는 사용 가능한 개발 시스템의 작은 부분일 뿐입니다. 일반 UNIX 시스템에는 시스템 서비스와 도구를 제공하는 응용 프로그램도 포함되어 있습니다. Linux 시스템의 경우 이러한 프로그램은 많은 프로그래머가 작성하여 무료로 출시됩니다.
Linux 커뮤니티는 자유 소프트웨어의 개념을 지지합니다. 즉, 소프트웨어 자체가 제한되어서는 안 되며 GNU(GNU는 GNU의 Not UNIX의 재귀적 약어) General Public License(GPL)를 준수합니다.
자유 소프트웨어 재단은 Richard Stallman에 의해 설립되었으며 그 목적은 UNIX 시스템과 호환되지만 UNIX 이름 및 소스 코드 개인 정보 보호 권리에 의해 제한되지 않는 운영 체제 및 개발 환경을 만드는 것입니다.
GNU 프로젝트는 소프트웨어 커뮤니티에 UNIX 시스템 응용 프로그램의 많은 모방품을 제공했습니다. 예를 들어 유명한 것은
GCC: GNU C 컴파일러를 포함하는 GNU Compiler Collection입니다.
G++: G++ 컴파일러, GCC의 일부입니다.
GDB: 소스 코드 수준 디버거.
GNU make
bash: 명령 해석기(셸 유형)
이러한 무료 소프트웨어와 Linux 커널을 함께 사용하면 다음과 같이 말할 수 있습니다. GNU, 무료 UNIX와 유사한 시스템을 만드는 목표가 달성되었습니다. 리눅스 시스템을 통해. GNU 소프트웨어의 기여로 인해 이제 많은 사람들은 일반적으로 Linux 시스템을 GNU/Linux라고 부릅니다.
일을 잘하고 싶다면 먼저 도구를 갈고닦아야 합니다. 리눅스 프로그램을 개발하려면 먼저 개발 환경을 구축해야 합니다.
Linux 개발에는 Linux 시스템 환경 설치가 필요합니다. 일반적으로 개발을 위한 Ubuntu 시스템 설치에는 VMWare가 사용됩니다. 구체적인 설치 과정은 다음 게시물 https://zhuanlan.zhihu.com/p/38797088을 참조하세요. 여기서는 너무 많은 소개를 하지 않겠습니다.
SSH(Secure Shell)는 IETF(Internet Engineering Task Force)에서 개발한 애플리케이션 계층을 기반으로 하는 보안 네트워크 프로토콜입니다. FTP, Pop, Telnet과 같은 기존 네트워크 서비스 프로그램은 데이터, 사용자 계정 및 사용자 비밀번호를 네트워크에서 일반 텍스트로 전송하기 때문에 본질적으로 안전하지 않으며 중간자 공격에 쉽게 취약합니다.
SSH는 클라이언트 openssh-client와 서버 openssh-server로 나누어집니다. SSH 클라이언트를 사용하여 시스템에 로그인하려면 우분투 시스템 아래에 SSH 서버를 설치해야 합니다.
sudo apt update
sudo apt update
sudo apt install openssh-server
sudo service ssh start
ip addr show
sudo apt install openssh-server
2) ssh
🎜🎜sudo 서비스 시작 ssh start
🎜🎜🎜3) 우분투 시스템 ip🎜🎜🎜🎜🎜를 보려면 ip addr show
명령을 사용하세요.현재 우분투 IP 주소가 192.168.176.148
Ubuntu에 SSH 서버를 설치한 후 Windows 시스템 하에서 MobaXterm을 이용하여 접속하여 SSH 서버가 성공적으로 접속되는지 테스트하는 것을 확인할 수 있습니다. 설치되었습니다. 단계는 다음과 같습니다.
Xterm 소프트웨어를 실행하고 아래 그림과 같이 "Session"을 선택합니다.
아래 그림과 같이 "SSH"를 클릭하고 설정합니다.
In the 대화 상자에서 "Protocol"은 "SSH", "hostname"은 ubuntu의 IP 주소, 사용자 이름은 현재 사용자 이름을 선택합니다. 포트 번호에는 기본값 22를 사용합니다. 설정이 완료된 후 "확인"을 클릭하면 다음과 같은 명령줄 터미널이 나타나 가상 머신의 Ubuntu 시스템이 연결되었음을 나타냅니다.
이 방법으로 호스트와 개발보드 사이의 네트워크 통신이 정상적인지 확인한 후 개발보드에 로그인할 수 있습니다.
Visual Studio Code(줄여서 VSCode)는 Microsoft의 무료 편집기입니다. Windows, Linux 및 macOS의 세 가지 버전이 있습니다. 설치 과정은 직접 검색해 보실 수 있습니다. 여기서는 주로 C/C++ 프로그램 개발에 사용되는 확장팩을 소개합니다. 설치 단계는 아래 그림과 같습니다.
다음 플러그인이 일반적으로 사용되며 필요합니다. 설치 대상:
C/C++.
C/C++ 스니펫, C/C++ 재사용 코드 블록.
C/C++ 고급 Lint, 즉 C/C++ 정적 감지입니다.
Code Runner, 즉 코드 실행입니다.
자동 완성, 즉 자동 헤더 파일 포함을 포함합니다.
무지개 괄호, 무지개 괄호, 코드 읽기에 도움이 됩니다.
One Dark Pro, VSCode용 테마.
GBKtoUTF8, GBK를 UTF8로 변환합니다.
ARM은 ARM 어셈블리 구문 강조를 지원합니다.
중국어(간체), 즉 중국어 환경입니다.
vscode-icons, VSCode 아이콘 플러그인, 주로 리소스 관리자 아래 각 폴더의 아이콘입니다.
compareit, 비교 플러그인을 사용하여 두 파일 간의 차이점을 비교할 수 있습니다.
DeviceTree, 장치 트리 구문 플러그인.
Markdown Preview 향상된 마크다운 미리보기 플러그인.
Maridown pdf, .md 파일을 다른 형식으로 변환하세요.
수백 가지의 Linux 명령이 있는데, 초보자에게는 일반적으로 사용되는 명령이 많지 않으며 마스터할 필요도 없습니다. 일상적인 학습과 업무 과정에서 익숙하지 않은 리눅스 명령어를 접하게 된다면, 시간이 지나면서 더 많은 정보를 확인하다 보면 자연스럽게 기억하게 될 것입니다. 다음은 Linux의 가장 기본적인 17가지 명령을 소개합니다.
clear
clear
ip addr
date
ip 주소
3.
date
디렉토리와 파일의 경로는 절대 경로와 상대 경로로 구분됩니다. 절대 경로는 /usr/etc/readme.txt와 같이 루트(/)로 계산됩니다. 상대 경로는 현재 작업 디렉토리에서 계산됩니다. 현재 작업 디렉토리가 /usr이면 etc/readme.txt는 /usr/etc/readme.txt와 동일합니다. 또한 다음 사항에 유의해야 합니다. 점 1개는 현재 작업 디렉터리를 나타내고... 점 2개는 현재 작업 디렉터리의 상위 디렉터리를 나타냅니다.
다음은 Linux 시스템 디렉토리 구조에 대한 간략한 소개입니다. 많은 사용자가 Linux 시스템 디렉토리 구조에 대해 엉뚱한 생각을 하는 것을 방지하기 위해 Linux Foundation에서는 FHS 표준을 발표했습니다. 대부분의 Linux 배포 시스템은 이 표준을 따릅니다. 참고: FHS(파일 시스템 계층 표준)는 Linux 시스템에서 모든 첫 번째 수준 디렉터리와 일부 두 번째 수준 디렉터리(/usr 및 /var)의 사용을 지정하는 파일 시스템 계층 표준입니다. 이 표준을 게시하는 주요 목적은 사용자가 각 디렉터리에 어떤 유형의 파일을 저장해야 하는지 명확하게 이해하도록 하는 것입니다.
usr(사용자 아님 참고), 전체 이름은 Unix Software Resource입니다. 이 디렉토리는 시스템 소프트웨어 리소스를 저장하는 데 사용됩니다. FHS는 개발자가 제품에 대해 별도의 디렉터리를 만드는 대신 /usr 디렉터리의 하위 디렉터리에 소프트웨어 제품 데이터를 배치할 것을 권장합니다.
Linux 시스템에서 모든 시스템 기본 소프트웨어는 /usr 디렉토리에 저장됩니다. /usr 디렉토리는 Windows 시스템의 C:Windows + C:Program 파일 조합과 유사합니다.
FHS에서는 /usr 디렉터리에 아래 표와 같은 하위 디렉터리가 있어야 한다고 권장합니다.
/var 디렉토리는 캐시, 로그 파일, 소프트웨어 실행 중에 생성된 파일 등과 같은 동적 데이터를 저장하는 데 사용됩니다. 일반적으로 이 디렉터리에는 표 4에 표시된 대로 이러한 하위 디렉터리가 포함되는 것이 좋습니다.
pwd
pwd
cd 目录名
示例:
cd /tmp
cd ..
cd
ls
是list的缩写,通过 ls
命令不仅可以查看目录和文件信息,还可以查看目录和文件的权限、大小、主人和组等信息。
选项 -l
列出目录和文件的详细信息。
示例:
ls
ls -l
正则表达式又称规则表达式、通配符,目录和文件名都支持正则表达式,正则表达式的规则比较多,在这里我们只需要掌握最常用的两种:星号 “*” 。
星号 “*” :匹配任意数量的字符。
例如:ls open*.zip
mkdir aaa
mkdir aaa/bbb -p
rm [-rf]
目录或文件
选项-r
可以删除目录,如果没有-r只能删除文件。
选项-f
表示强制删除,不需要确认。
rm aaa -r
rm -f ccc.c
mv 旧目录或文件名 新目录或文件名
mv book.c book1.c
mv book.c OPC/test3
mv book.c OPC/test3
cp [-r] 旧目录或文件名 新目录或文件名
注:-r 是递归的意思,英文 recursion
选项-r
可以复制目录,如果没有选项-r
只能复制文件。
示例:
cp book1.c book2.c
cp aaa bbb -r
cp book1.c aaa/book1.c
cp book1.c aaa/.
以上两个命令的效果相同。
cp -r aaa /tmp/aaa
cd 디렉터리 이름
🎜🎜예: 🎜 🎜🎜 1) /tmp 디렉터리 입력 🎜🎜🎜cd /tmp
🎜🎜🎜2) 상위 디렉터리 입력 🎜🎜🎜cd ..
🎜🎜🎜3 ) 사용자의 메인 디렉터리🎜🎜🎜cd
🎜🎜🎜7를 입력하세요. 목록 디렉터리 및 파일 정보🎜🎜🎜ls
는 list의 약어로, ls를 통해
명령 디렉터리 및 파일 정보를 볼 수 있을 뿐만 아니라 권한, 크기, 소유자, 디렉터리 및 파일 그룹과 같은 정보도 볼 수 있습니다. 🎜 옵션 -l
은 디렉터리 및 파일 세부정보를 나열합니다. 🎜 예: 🎜🎜🎜1) 현재 작업 디렉터리의 모든 디렉터리 및 파일 이름 정보 나열 🎜🎜🎜ls
🎜🎜🎜🎜2) 현재 작업 디렉터리에 있는 모든 디렉터리 및 파일 이름에 대한 자세한 정보 나열🎜🎜🎜ls - l
🎜🎜🎜🎜 3) 정규식🎜🎜🎜정규식은 정규식 및 와일드카드라고도 합니다. 디렉터리 및 파일 이름 모두 정규식에 대한 많은 규칙이 있습니다. 여기서는 가장 일반적으로 사용되는 두 가지 유형만 익혀야 합니다. "*". 🎜🎜별표 “*”: 원하는 개수의 문자와 일치합니다. 🎜🎜🎜예: ls open*.zip
🎜🎜🎜🎜8. 디렉토리 생성🎜🎜🎜🎜1) 현재 작업 디렉토리에 aaa 디렉토리를 생성합니다🎜🎜🎜mkdir aaa
🎜🎜🎜2) 현재 작업 디렉터리에서 작업 디렉터리 아래에 aaa 디렉터리를 생성하고, aaa 디렉터리 아래에 bbb 디렉터리를 생성합니다🎜🎜🎜mkdir aaa/bbb -p
🎜🎜🎜9 디렉터리 및 파일 삭제🎜🎜 🎜rm [-rf ]
디렉터리 또는 파일🎜🎜-r
옵션을 사용하면 해당 디렉터리를 삭제할 수 있습니다. -r이 없으면 파일만 삭제할 수 있습니다. 🎜🎜옵션 -f
는 강제 삭제를 의미하며 확인이 필요하지 않습니다. 🎜🎜🎜1) aaa 디렉터리 삭제🎜🎜🎜rm aaa -r
🎜🎜🎜2) 현재 작업 디렉터리에서 ccc.c 파일을 강제 삭제🎜🎜🎜rm -f ccc .c
🎜🎜🎜9. 디렉터리 및 파일 이동🎜🎜🎜mv 이전 디렉터리 또는 파일 이름 새 디렉터리 또는 파일 이름
🎜🎜🎜1) 현재에서 book.c 파일을 바꿉니다. 작업 디렉토리 이름을 book1.c🎜🎜🎜mv book.c book1.c
🎜🎜🎜2) OPC/test3이 기존 디렉토리인 경우 다음 명령은 현재 작업 디렉토리에 book.c를 복사합니다. 디렉토리 파일이 OPC/test3 디렉토리로 이동됩니다. 🎜🎜🎜mv book.c OPC/test3
🎜🎜🎜3) OPC/test3 디렉토리가 존재하지 않는 경우 다음 명령은 현재 작업 디렉토리에 있는 book.c 파일의 이름을 OPC/로 바꿉니다. 테스트3. 🎜🎜🎜mv book.c OPC/test3
🎜🎜🎜10. 디렉터리 및 파일 복사🎜🎜🎜cp [-r] 이전 디렉터리 또는 파일 이름 새 디렉터리 또는 파일 이름
🎜🎜참고: -r은 재귀를 의미합니다. 영어 recursion🎜🎜🎜 옵션 -r
은 디렉터리를 복사할 수 있습니다. -r
옵션이 없으면 파일만 복사할 수 있습니다. . 🎜🎜예:🎜🎜🎜1) 현재 작업 디렉터리의 book1.c 파일을 book2.c🎜🎜🎜cp book1.c book2.c
🎜🎜🎜2) 현재 작업 디렉터리에 복사합니다. 디렉토리 현재 작업 디렉토리 아래의 aaa 디렉토리를 bbb🎜🎜🎜cp aaa bbb -r
🎜🎜🎜3) 현재 작업 디렉토리의 book1.c 파일을 aaa/book1.c🎜로 복사합니다. 🎜🎜 cp book1.c aaa/book1.c
🎜🎜cp book1.c aaa/.
🎜🎜위 두 명령은 동일한 효과를 가집니다. 🎜🎜🎜4) 현재 작업 디렉터리의 aaa 디렉터리를 /tmp/aaa🎜🎜🎜cp -r aaa /tmp/aaa
🎜에 복사합니다.cp -r aaa /tmp/.
cp -r aaa /tmp/.
以上两个命令的效果相同。
ping -c 包的个数 ip地址或域名
ping用于确定本地主机是否能与另一台主机成功交换数据包,判断网络是否通畅。
ping -c 5 127.0.0.1
ping -c 5 www.baidu.com.cn
可以看出百度的服务器是可以ping
通的。
ping -c 5 www.google.com
可以看出谷歌的服务器是ping
不通的。
显示文本文件的内容有三个命令:cat
、more
和tail
。
cat 文件名
cat命令一次显示整个文件的内容。
cat main.cpp
more 文件名
为了方便阅读,more命令分页显示文件的内容,按空格键显示下一页,按b键显上一页,按q键退出。
tail -f 文件名
tail -f
用于显示文本文件的最后几行,如果文件的内容有增加,就实时的刷新。对程序员来说,tail -f
极其重要,可以动态显示后台服务程序的日志,用于调试和跟踪程序的运行。
wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出
wc 文件名
grep "内容" 文件名
注意,如果内容中没有空格等特殊字符,可以不用双引号括起来。
示例:
grep signal main.cpp
find 目录名 -name 文件名
参数说明:
目录名:待搜索的目录,搜索文件的时候,除了这个目录名,还包括它的各级子目录。
文件名:待搜索的文件名匹配的规则。
示例:
从 OPC 目录开始搜索,把全部的 *.cpp 文件显示出来。
find OPC -name *.cpp
locate 文件名
示例:
搜索open62541.c文件
locate open62541.c
注意:第一次使用该命令,可能需要更新数据库,按照提示的命令执行一下就好了.
find多用于在某个目录下进行模糊搜索,而locate则是进行全盘准确定位。
用于改变linux文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。
举例:ls -l example
위 두 명령은 동일한 효과를 갖습니다.
ping -c 패킷 IP 주소 또는 도메인 이름 수
ping을 사용하여 확인합니다. 로컬 호스트가 다른 호스트와 데이터 패킷을 성공적으로 교환하여 네트워크가 원활한지 확인합니다. 🎜ping -c 5 127.0.0.1
🎜🎜ping -c 5 www.baidu.com.cn
🎜🎜🎜바이두 서버가 ping
할 수 있는 것을 볼 수 있습니다. 🎜ping -c 5 www.google.com
🎜🎜🎜Google 서버가 ping
할 수 없는 것을 볼 수 있습니다. 🎜cat
, 가 있습니다. 더
및 테일
. 🎜cat 파일 이름
🎜🎜cat 명령은 전체 파일의 내용을 한 번에 표시합니다. 🎜🎜cat main.cpp
🎜추가 파일 이름
🎜🎜읽기 쉽도록 more 명령은 파일 내용을 페이지 단위로 표시합니다. 스페이스바를 누르면 다음 페이지가 표시되고, b 키를 누르면 이전 페이지가 표시되고, q 키를 누르면 종료됩니다. 🎜tail -f 파일 이름
🎜🎜tail -f
은 텍스트 파일을 표시하는 데 사용됩니다. 마지막 몇 줄에서는 파일의 내용이 늘어나면 실시간으로 새로 고쳐집니다. 프로그래머에게는 tail -f
가 매우 중요합니다. 이는 백그라운드 서비스 프로그램의 로그를 동적으로 표시하고 프로그램 실행을 디버깅하고 추적하는 데 사용할 수 있습니다. 🎜wc 파일 이름
🎜🎜grep "content" 파일 이름
🎜 🎜 내용에 공백 등 특수 문자가 없으면 큰따옴표로 묶을 필요가 없다는 점에 유의하세요. 🎜🎜🎜예: 🎜grep 신호 main.cpp
🎜🎜find 디렉터리 이름-이름 파일 이름
🎜🎜매개변수 설명: 🎜 디렉터리 이름: 파일 검색 시 검색할 디렉터리. 디렉터리 이름에는 모든 수준의 하위 디렉터리도 포함됩니다. 🎜 파일 이름: 검색할 파일 이름과 일치하는 규칙입니다. 🎜 예: 🎜 OPC 디렉터리에서 검색을 시작하고 모든 *.cpp 파일을 표시합니다. 🎜🎜find OPC -name *.cpp
🎜파일 이름 찾기
🎜🎜예: 🎜 open62541.c 파일 검색🎜🎜 open62541.c를 찾습니다.
🎜🎜🎜참고: 이 명령을 처음 사용할 때 데이터베이스를 업데이트해야 할 수도 있습니다. 프롬프트에 따라 실행하면 됩니다. 🎜🎜🎜find는 주로 특정 디렉터리에서 퍼지 검색을 수행하는 데 사용됩니다. 특정 디렉토리에서 퍼지 검색을 수행하는 데 사용됩니다. 🎜ls -l 예
🎜🎜🎜🎜첫 번째 열에는 10개의 위치가 있으며 첫 번째 문자는 파일 형식을 지정합니다. 일반적인 의미에서 디렉토리는 파일이기도 합니다. 첫 번째 문자가 대시이면 디렉터리가 아닌 파일임을 의미합니다. d이면 디렉토리를 의미한다. 두 번째 문자부터 열 번째 문자까지 총 9개의 문자가 있습니다. 3개 문자 그룹은 파일 또는 디렉터리에 대한 3개 사용자 그룹의 권한을 나타냅니다. 권한 문자는 수평선을 사용하여 빈 권한을 나타내고, r은 읽기 전용, w는 쓰기, x는 실행 파일을 나타냅니다. 🎜공통 매개변수:
-c 변경 사항이 발생하면 처리 정보를 보고합니다.
-R 지정된 디렉터리 및 하위 디렉터리에 있는 모든 파일을 처리합니다.
권한 범위:
u: 디렉터리 또는 파일 현재 사용자
g: 디렉터리 또는 파일의 현재 그룹
o: 현재 사용자 또는 디렉터리 또는 파일의 그룹이 아닌 사용자 또는 그룹
a: 모든 사용자 및 그룹
권한 코드:
r: 읽기 권한, 숫자 4
w: 쓰기 권한, 숫자 2
x: 실행 권한, 숫자 1
- : 삭제 권한, 숫자 0으로 표시
s : 특수 권한
예:
chmod a-x 예
chmod a-x example
chmod 751 example -c
chmod u+r,g+r,o+r -R text/ -c
df [-h] [-T]
选项-h
以方便阅读的方式显示信息:
df -h
选项-T
列出文件系统类型:
df -h -T
程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的。
系统环境变量:公共的,对全部的用户都生效。
用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。
永久环境变量:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。
临时环境变量:使用时在Shell中临时定义,退出Shell后失效。
Linux环境变量也称之为Shell环境量变,以下划线和字母打头,由下划线、字母(区分大小写)和数字组成,习惯上使用大写字母,例如PATH、HOSTNAME、LANG等。
在Shell下,用env命令查看当前用户全部的环境变量。
上图只截取了部分环境变量,并非全部。
注:用env命令的时候,满屏显示了很多环境变量,不方便查看,可以用grep筛选。
env|grep 环境变量名
例如查看环境变量名中包含PATH的环境变量。
env|grep PATH
echo $环境变量名
例如:echo $LANG
可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序,PATH变量的具体用法本文后面的章节中有详细的介绍。
Linux系统的语言、地区、字符集。
echo $LANG
2) 예를 들어 소유자에게 읽기가 할당되었습니다. , 쓰기, 실행(7) 권한, 예제가 위치한 그룹에는 읽기 및 실행(5) 권한이 할당되고, 다른 사용자에게는 실행(1) 권한이 할당됩니다
chmod 751 example -c 🎜<img src="https://img.php.cn/upload/article/000/000/067/e82b90d63235e869835aad7e33cb32bb-20.png" alt="여기에 이미지 설명 삽입">🎜🎜3) 읽기 권한 추가 aaa 디렉터리와 그 하위 디렉터리에 있는 모든 파일🎜🎜<code>chmod u+r,g+r,o+r -R text/ -c
🎜🎜df [-h] [-T]
🎜🎜옵션 -h
는 읽기 쉬운 형식으로 정보를 표시합니다: 🎜🎜df -h / code>🎜<img src="https://img.php.cn/upload/article/000/000/067/95937c9778bb954936dccf16f688fc5c-22.png" alt="여기에 이미지 설명 삽입">🎜🎜옵션 -T
파일 시스템 유형 목록: 🎜🎜df -h -T
🎜🎜env|grep 환경 변수 이름
🎜🎜예를 들어 이름에 PATH가 포함된 환경 변수를 확인하세요. 🎜🎜env|grep PATH
🎜🎜🎜2) echo 명령🎜🎜echo $environment 변수 이름
🎜🎜예: echo $LANG
🎜에코 $LANG
🎜🎜🎜서버의 호스트 이름입니다.
echo $HOSTNAME
echo $HOSTNAME
用户当前使用的Shell解析器。
echo $SHELL
保存历史命令的数目。
当前登录用户的用户名。
echo $USER
当前登录用户的主目录。
echo $HOME
当前工作目录。
echo $PWD
C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。
export 变量名='值'
如果环境变量的值没有空格等特殊符号,可以不用单引号包含。
示例:
export PATH=$PATH:.
以上命令为当前shell的环境变量PATH添加.目录(是.)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
以上命令为当前shell的环境变量LD_LIBRARY_PATH添加.目录
采用export设置的环境变量,在退出Shell后就会失效,下次登录时需要重新设置。如果希望环境变量永久生效,需要在登录脚本文件中配置。
系统环境变量对全部的用户生效,设置系统环境变量有三种方法。
用户登录时执行/etc/profile文件中设置系统的环境变量。但是,Linux不建议在/etc/profile文件中设置系统环境变量。
/etc/profile在每次启动时会执行 /etc/profile.d下全部的脚本文件。/etc/profile.d比/etc/profile好维护,不想要什么变量直接删除 /etc/profile.d下对应的 shell 脚本即可。
/etc/profile.d目录下有很多脚本文件,例如:
ls /etc/profile.d
该文件配置的环境变量将会影响全部用户使用的bash shell。但是,Linux也不建议在/etc/bashrc文件中设置系统环境变量。
用户环境变量只对当前用户生效,设置用户环境变量也有多种方法。
在用户的主目录,有几个特别的文件,用ls
是看不见的,用ls .bash*
可以看见。
当用户登录时执行,每个用户都可以使用该文件来配置专属于自己的环境变量。
当用户登录时以及每次打开新的Shell时该文件都将被读取,不推荐在里面配置用户专用的环境变量,因为每开一个Shell,该文件都会被读取一次,效率肯定受影响。
当每次退出系统(退出bash shell)时执行该文件。
保存了当前用户使用过的历史命令。
环境变量脚本文件的执行顺序如下:
/etc/profile->/etc/profile.d->/etc/bashrc->用户的.bash_profile->用户的.bashrc
echo $SHELL
echo $USER
7) HOME현재 로그인한 사용자의 홈 디렉터리입니다.
echo $HOME
🎜🎜8) PWD🎜🎜현재 작업 디렉터리. 🎜🎜echo $PWD
내보내기 변수 이름='값'
🎜🎜환경 변수의 값에 공백 등 특수 기호가 없는 경우 작은따옴표 없이 포함할 수 있습니다. 🎜🎜예: 🎜🎜export PATH=$PATH:.
🎜🎜위 명령은 현재 셸의 환경 변수 PATH에 .directory를 추가합니다(예).export LD_LIBRARY_PATH= $LD_LIBRARY_PATH:.
🎜🎜위 명령은 현재 쉘의 환경 변수 LD_LIBRARY_PATH에 .directory를 추가합니다.ls /etc/profile.d
ls
로는 보이지 않지만 ls .bash*
로 볼 수 있는 몇 가지 특수 파일이 있습니다. /etc/profile->/etc/profile.d-> /etc/bashrc ->사용자의 .bash_profile->사용자의 .bashrc
🎜🎜동일한 이름을 가진 환경 변수, 여러 스크립트로 구성된 경우 마지막으로 실행된 스크립트의 구성이 우선합니다. 🎜🎜🎜3.4 중요한 환경 변수에 대한 자세한 설명🎜🎜🎜🎜1. PATH 환경 변수🎜🎜🎜실행 가능한 프로그램의 검색 디렉터리에는 Linux 시스템 명령과 사용자 응용 프로그램이 포함됩니다. 실행 프로그램의 디렉터리가 PATH에 지정된 디렉터리에 없으면 실행 시 해당 디렉터리를 지정해야 합니다. 🎜🎜1) PATH 환경 변수는 디렉터리 목록을 저장하며 디렉터리는 콜론으로 구분되며 마지막 점은 현재 디렉터리를 나타냅니다. 🎜🎜export PATH=디렉터리 1: 디렉터리 2: 디렉터리 3:… 디렉터리 n:.🎜🎜2) PATH의 기본값은 Linux 시스템 명령이 있는 디렉터리(/usr/local/bin:/usr/bin:/usr)입니다. / local/sbin:/usr/sbin), 이러한 디렉터리가 포함되지 않으면 일반적인 Linux 명령을 실행할 수 없습니다. (절대 경로를 입력해야 실행됩니다.) 🎜🎜예: 🎜ls /bin/ls
ls
명령이 /bin 디렉터리에 있는 것을 확인할 수 있습니다 ls /bin/ls
可以查看到ls
命令位于/bin目录下
此时我们执行命令 export PATH=
将PATH变量清空,再执行ls
命令,系统会提示找不到ls
命令。
采用绝对路径就可以使用,/bin/ls
为环境变量PATH添加/bin目录后,ls
也可以执行了。
示例:
在当前目录下执行 example 命令,提示无法执行。
将圆点.添加到环境变量PATH之后,便可以执行了。
export PATH=$PATH:.
C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要。
LD_LIBRARY_PATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。
export LD_LIBRARY_PATH=目录1:目录2:目录3:......目录n:.
这个环境变量我们会在下次课讲解Linux静态库与动态库时详细介绍。
1)在Shell下,用export设置的环境变量对当前Shell立即生效,Shell退出后失效。
2)在脚本文件中设置的环境变量不会立即生效,退出Shell后重新登录时才生效,或者用source命令让它立即生效,例如:
source /etc/profile
export PATH=
명령을 실행하여 PATH 변수를 지웁니다. , 그리고 ls
명령을 실행하면 시스템은 ls
명령을 찾을 수 없다는 메시지를 표시합니다.
/bin/ls
환경변수 PATH에 /bin 디렉터리를 추가한 후 ls
도 실행할 수 있습니다.
내보내기 PATH=$PATH:.
🎜🎜export LD_LIBRARY_PATH=Directory 1: Directory 2: Directory 3:... Directory n:.
🎜🎜🎜이 환경 변수는 다음 강의에서 Linux 정적 라이브러리와 동적 라이브러리를 설명할 때 설명하겠습니다. 자세한 소개. 🎜🎜🎜🎜3.5 환경 변수 유효성 검사 🎜🎜🎜1) Shell에서 내보내기로 설정된 환경 변수는 현재 Shell에 즉시 적용되며 Shell이 종료된 후에는 무효화됩니다. 🎜🎜2) 스크립트 파일에 설정된 환경 변수는 즉시 적용되지 않습니다. 셸을 종료하고 다시 로그인한 후에만 적용되거나 소스 명령을 사용하여 즉시 적용됩니다. 예: 🎜🎜source /etc/profile🎜🎜🎜3.6 애플리케이션 경험🎜🎜🎜환경 변수를 설정하는 방법은 다양하지만 시스템 환경 변수는 /etc/profile.d 디렉터리에 구성하고, 사용자 환경 변수는 사용자의 .bash_profile에 구성됩니다. 다른 스크립트 파일에 환경 변수를 구성하면 시스템 운영 및 유지 관리 문제가 증가하고 오류가 발생하기 쉽습니다. 🎜🎜관련 추천: "🎜Linux 비디오 튜토리얼🎜"🎜🎜위 내용은 Linux 운영체제의 일반적인 명령어와 환경변수에 대해 이야기해보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!