BashスクリプトのCDには、エイリアス、関数、ソースコードはありません。

BashスクリプトのCDには、エイリアス、関数、ソースコードはありません。

cdディレクトリに配置する必要があるbashスクリプトを作成しました。

私の問題は、サブシェルのディレクトリのみが変更されることです。

同様の質問をたくさん読んだが、解決策があるかどうかを知りたい。とは別にエイリアス、関数を使用するか、スクリプトをインポートします。

何を言っているのかわからない場合は、次の例を見てください。

user@linux ~: cat ./myscript.sh
#!/bin/bash
cd /any/directory
user@linux ~: ./myscript.sh
user@linux ~: 

私のスクリプトはたくさんもう機能を使いたくない!

ベストアンサー1

現在のシェルにcdコマンドを適用するには、サブシェルの変更が親シェルに再度伝播されないため、現在のシェルでスクリプトを実行する必要があります。

      $ pwd
      /afs/user/i/ahmad
      $ cat test1
        #!/bin/bash
        cd /etc
      $ . test1           #runs test1 in current shell even if its not executable
      $ pwd
      /etc

echoとevalを使用してください。

親シェルで eval を使用します。シェルスクリプト echo コマンドで親シェルとして実行するコマンドは次のとおりです。

echo "cd $filepath"

親シェルで eval を使用してシェルスクリプトを起動できます。

  eval `sh foo.sh`

例:

  $ cat test1.sh 
   #!/bin/bash
   echo "cd /etc"

  $ eval `sh test1.sh`
  $ pwd
  /etc

おすすめ記事