スクリプトで「cd」を使用してディレクトリを変更できないのはなぜですか? 質問する

スクリプトで「cd」を使用してディレクトリを変更できないのはなぜですか? 質問する

現在のディレクトリをプロジェクト ディレクトリに変更する小さなスクリプトを作成しようとしています。

#!/bin/bash
cd /home/tree/projects/java

このファイルを proj として保存し、 で実行権限を追加してchmodにコピーしました/usr/bin。 で呼び出してもproj何も起こりません。何が間違っているのでしょうか?

ベストアンサー1

シェル スクリプトはサブシェル内で実行され、各サブシェルは現在のディレクトリが何であるかという独自の概念を持っています。これはcd成功しますが、サブシェルが終了するとすぐに対話型シェルに戻り、そこでは何も変更されません。

この問題を回避する 1 つの方法は、代わりにエイリアスを使用することです。

alias proj="cd /home/tree/projects/java"

おすすめ記事