ZSHにエイリアスを作成しようとしています。
エイリアスの目的は、Python virtualenvを有効にすることです。
私はすでに私の中にいます。.zshrc
alias SOU="source /home/andykw/.zshrc && source $(setopt extendedglob && ls -d .^git/)/bin/activate"
フォルダの1つで仮想環境を有効にした後、別のフォルダに切り替えて別の仮想環境を有効にして仮想環境を変更する必要があることがよくあります。
例:私はこのフォルダで作業しており、環境を無効にして有効にする必要があるflask_rest
他のプロジェクトで作業する必要があるとします。django_rest
flask_rest
django_rest
コマンドラインを使用してこれを複数回実行するのではなく、入力してからsource <folder_name>/bin/activate
別のフォルダを使用するだけです。source <another_folder_name>/bin/activate
SOU
文脈がより明確になることを願っています。
PS:私はLinux用のUbuntuとWindowsサブシステムを使います。
答え1
似たようなものが欲しいようです。
SOU() {
set -o localoptions -o extendedglob
local f
for f (~/.zshrc ~/.(^git)/bin/activate(N.)) source $f || return
}
SOU
ホームディレクトリの外にある隠しディレクトリにあるファイルとファイルを取得するために使用されます(~/.zshrc
私にはあまり意味がないようだという事実を無視して)。bin/activate
.git
自分が所有し、所有者が読み取ることができるファイルを制限し、U
修飾子を追加することもできます。r
これは機能一つではなくニックネーム。エイリアスは csh ユーザーに適しています。 Bourneなどのシェルには関数などの適切なプログラミング構成がありますが、エイリアスを使用するときにいくつかの極端なケースではまだ役に立ちます。するこれがテキスト置換として扱われるか、呼び出し元の範囲でエイリアスを変更する必要がありますが、ここではどちらも該当しないようです。
関数定義をディレクトリに配置したり、~/.zshrc
ディレクトリの1つに自動ロード可能な関数として追加したりできます$fpath
。info zsh autoloading
詳細より。
いかなる場合でも調達~/.zshrc
はできません。元に戻すソースファイルthosedirs/bin/activate
の役割は何ですか?それはただやり直す何が起こったかにかかわらず~/.zshrc
(これによって発生したいくつかの変更は元に戻されるかもしれませんが、bin/activate
これは偶然かもしれません)、その変更のいくつかが追加された場合その他の問題。
答え2
欲しいものが見つかるエイリアスだけの場合一つ ./.*/bin/activate
現在のディレクトリツリーにファイルを保存してインポートするには、次のものが必要です。
alias SOU='source. */bin/activate'
globが.*/bin/activate
複数のファイルと一致する場合は、最初のファイルのみをインポートします。ログインしていない新しいインタラクティブシェルセッションを開くたびにファイルをインポートする必要があり~/.zshrc
、ファイルを複数回インポートしたくありません。明示的にインポートする理由を理解するために新しい質問をすることをお勧めします。