"script"コマンドを使用してセッションを記録するときに元の場所にcd

"script"コマンドを使用してセッションを記録するときに元の場所にcd

script log.txt私のbash設定ファイルにこれがあります。これにより、新しいサブプロセスが作成され、セッション全体がlog.txtに書き込まれます。cmd+を押してt新しい端末を開くと、通常はコマンドが呼び出されたディレクトリで端末が開きますが、新しいスクリプトサブプロセスは常にホームディレクトリに戻ります。

現在のディレクトリをこのスクリプトコマンドに「転送」する方法はありますか?

答え1

/procMacOSの端末には、1つのタブで実行されているプロセスから現在の作業ディレクトリをインポート(または同様)して、新しいタブの初期現在の作業ディレクトリとして使用する機能があるようです。

この場合、最初のタブで実行されるプロセスはscript現在の作業ディレクトリを変更することにまったく気にしないため、新しいタブは常にそのディレクトリに表示されます。実際、(一部の)子プロセスの現在の作業ディレクトリのみがscript変更されますが、端末アプリケーションはそれを認識しません。

これが正しい場合は、ターミナルアプリケーションの動作方法を変更したり動作方法を変更したりする以外に解決策はありませんscript

答え2

現在のディレクトリは簡単です。

CWD="$(pwd)" ; 
echo "PWD === ${CWD}" ;

あるいは、オンラインで配信することもできます。たとえば、次のようになります。

CWD="something" ./script log.txt

スクリプトの内容は次のとおりです。

cat script
#!/bin/bash
if [ $CWD ] ; then echo "CWD Preset & == ${CWD}" ; else echo "CWD NOT SET... SETTING to: $(pwd)" ; CWD=$(pwd) ; fi ;

export明らかに上記の変数を使用することもできます。CWDこの場合、他のサブシェル/プロセスがそれにアクセスできる必要があります。

export CWD="$(pwd)" ;  # or the path of interest
# ... then post New Terminal / Session:
echo "CWD == ${CWD}" ; 

関連情報