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