linux之shell腳本執行及配置文件
bash腳本執行方法:
1 解釋器直接運行 /usr/bin/bash bash FOO.sh 2 使用路徑運行腳本(需要有x權限) chmod +x FOO.sh /PATH/TO/FOO.sh 3 使用.或source命令執行腳本 . /PATH/TO/FOO.sh source /PATH/TO/FOO.sh 1,2執行方法和3執行方法的區別: 1,2: 執行的解釋器爲子程序,因此不會影響當前shell的變量. 3: 執行的解釋器爲當前的shell程序,會讀取其中的變量並覆蓋爲當前環境的變量.(一般用於設置默認變量)
bash的配置文件
全局配置 /etc/profile /etc/profile.d/*.sh /etc/bashrc 個人配置 ~/.bashrc ~/.bash_profile ~/.bash_logout profile系列文件: (1) 用於定義環境變量 (2) 運行命令或腳本 bashrc系列文件: (1) 定義命令別名和函數 (2) 定義本地變量 .bash_logout: 用戶退出登錄之前執行的腳本
bash之交互式登錄與非交互式登錄
交互式登錄和非交互式登錄區別: 讀取的配置文件不同 切換命令: su USERNAME 非交互式 su - USERNAME 交互式登錄 交互式登錄讀取配置文件順序: /etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc 非交互式登錄讀取配置文件順序: /etc/bashrc --> ~/.bashrc --> /etc/profile.d/*.sh 注意: 交互式shell切換爲非交互式shell時,首先繼承父shell的所有變量,再讀取對應配置文件中的變量並覆蓋已有變量.
變量查改
set set 列出當前shell中變量名及其值 env env 列出當前shell中環境變量 unset unset name 取消變量名 $- 顯示set的啓用的功能 # echo $- himBH h : 是否開啓hash i : 是否是交互式shell m : 是否開啓job控制 B : 是否開啓{}的擴展功能 C : 是否開啓覆蓋重定向功能 H : 是否啓用history展開命令,並使用!等快捷方式調用