script log.txt
私のbash設定ファイルにこれがあります。これにより、新しいサブプロセスが作成され、セッション全体がlog.txtに書き込まれます。cmd+を押してt新しい端末を開くと、通常はコマンドが呼び出されたディレクトリで端末が開きますが、新しいスクリプトサブプロセスは常にホームディレクトリに戻ります。
現在のディレクトリをこのスクリプトコマンドに「転送」する方法はありますか?
答え1
/proc
MacOSの端末には、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}" ;