0

ここにある答えを使用してみました:

シェルスクリプトで「cd」を実行し、スクリプトが終了した後もそこにとどまる方法は?

「source」コマンドを追加すると、「source」を実行するか、cshrc でコーディングされたエイリアスを使用してスクリプトを呼び出すかに関係なく、スクリプトの実行後もディレクトリは変更されません。

どんな助けでも大歓迎です!

4

2 に答える 2

1

以下に示すように、への呼び出しがサブシェル内で実行されてcdないことを確認してください。もしそうなら、これはうまくいかないでしょうsource

cdサブシェルでのスクリプト

#!/bin/bash

( cd /etc ) # thie exec's in a subshell

出力

$ pwd
/home/siegex
$ source ./cdafterend.sh && pwd
/home/siegex

サブシェルにcd ないスクリプト

#!/bin/bash

cd /etc # no subshell here

出力

$ pwd
/home/siegex
$ source ./cdafterend.sh && pwd
/etc
于 2010-12-17T19:59:43.353 に答える
0

コマンドが意図したとおりに機能するためには、このスクリプト内のcdコマンドから「/bin/」を削除する必要がありました。これを削除すると、このスクリプトのサブシェルの問題が削除されます。また、lsコマンドでの「$ 1」のコーディングは、このコンテキストでは無効でした。

于 2011-01-12T16:36:07.733 に答える