
tcsh では別名が必要で、別のディレクトリに移動しますpwd
。cd
以前は、これには次のエイリアスを使用しましたが、シェルプロンプトもに変更されました[current directory]>
。プロジェクトの要求により、シェルプロンプトを変更することはできませんが、まだ毎回使用したいと思いますcd
。
alias cd 'cd \!* ; set cwd=`pwd`;pwd;set prompt=$cwd:t\ \!\>\ '
上記のエイリアスを使用して削除しようとしましたが、うまくいきませんでしたset prompt
(構文を理解していません)。
答え1
以下は私にとって効果的でした。
alias cd 'cd \!*; set cwd=`pwd`; pwd'
cd
これは、3つのコマンドを実行するエイリアスに置き換えられます。
cd \!*
これによりディレクトリが変更されます。
set cwd=`pwd`
結果を変数pwd
に保存し、最後にcwd
pwd
現在のディレクトリを印刷します。
2番目のコマンドはプロンプトでは必要ないため、これ以上役に立たないため、次のように単純化できます。
alias cd 'cd \!*; pwd'
またはより良い方法は
alias cd 'cd -p \!*'
オプションを使用して-p
結果ディレクトリを印刷します。
(では、変数に保存するのではなく、tcsh
プロンプトでまたはを指定して現在の作業ディレクトリをインポートできます。すべての場合にフルパスを提供し、可能であれば単純化を使用してください。)%/
%~
%/
%~
~
答え2
あなたはtcsh
特別を定義することができますcwdcmd
フック現在の作業ディレクトリが変更されるたびに呼び出されるエイリアス:
alias cwdcmd pwd
zsh
この概念を複製しました(フックを使用)。機能変えるニックネーム(tcsh
機能なし):
chpwd() pwd
とにかく、現在の作業ディレクトリの末尾の部分をプロンプトに表示するためには、それは必要ありません。
set prompt='%c !> '
十分でしょう。また、変数は独自にtcsh
設定されるため、$cwd
エイリアスで手動で設定する必要はありませんcd
。
答え3
別のオプションはを使用することですがrprompt
、これはプロンプトとまったく同じですが、正しい横:
例えばset rprompt="%~"
:
% cd /usr/local/bin/ ~
% echo Hello /usr/local/bin
Hello
% /usr/local/bin
prompt
ここでエイリアスを使用することもできますrprompt
。
これが一般的なプロンプトを変更しないようにする「プロジェクト要件」を満たしているかどうかはわかりませんが、おそらくオプションかもしれません。