システムにどのシェル インタープリタがあるかを確認します: cat /etc/shells
CentOs はデフォルトで bash を使用します: echo $SHELL
シェルスクリプトの入門
1. スクリプト形式:
スクリプトは、 パーサーを指定するために#!/bin/bashで始まる必要があります。
最初のスクリプト hello.sh を作成します。
# 编写脚本 也可以不写.sh指定后缀
vim hello.sh
#!/bin/bash
echo hello world
echo "hello world bash " >> lxw.txt
最初の行 #!/bin/bash は、 パーサー bash を指定するために使用されます。
2 行目は「hello world」という行を出力します。
3 行目は、lxw.txt ファイルに hello world bash を追加します。
スクリプトを実行します。
bash スクリプト名
sh スクリプト名
ファイル名 スクリプトを実行する ./hello.sh
現在のユーザー権限は読み取りおよび書き込みrw-であり、実行可能な権限xがないため、権限が十分ではないことがわかります。
スクリプトファイルの権限を変更する必要があります
# 方式一hello.sh 脚本的+x 权限
chmod +x hello.sh
# 方式二 二进制更改
chmod 744 hello.sh
権限を変更した後、スクリプト名を使用してスクリプトを直接実行できることがわかりました。
ソース hello.sh . hello.sh 実行スクリプト
ここでの. スクリプト名は 前の ./. とは異なります。 ./ は相対パスです。ここでの . はシェルに埋め込まれたコマンド タイプのソース です。
ソースと bash sh の違い
最初の 2 つのメソッド (bash、sh) は、現在の
シェル
で
サブシェルを開き
、スクリプト コンテンツを実行します。スクリプト コンテンツが終了すると、サブシェルは閉じて親シェルに戻ります。
3 番目の方法は、スクリプト パスの前に「.」または
ソースを追加して、
サブシェル
を開かずにスクリプトの内容を現在のシェルで実行できるようにすることです
。これが、 /etc/profileファイルを変更するたびにそれを取得する必要がある理由です。
サブシェルを開く場合と開かない場合の違いは、サブシェル内の設定などの環境変数の継承関係です。
現在の変数、親シェルは非表示です