2つのディレクトリがあります:src
と。特に、または内部にない限りprojects
実行されないようにしたいと思います。可能ですか?git ...
src
projects
答え1
バイナリの実行を防ぐことは困難ですが、一般的な場合には簡単な保護方法があります。
- この名前を置き換えるシェル関数を定義します。これは明らかに他の(また他のユーザーの)シェルでは機能しません。
- $ PATHからバイナリを取り出し、ラッパースクリプトに置き換えます。これはより安全ですが、明らかにソフトウェアの更新に問題を引き起こす可能性があります(スクリプトの上書き)。
シェル関数は次のとおりです。
git () {
local cwd="$(pwd -P)"
if ! [ "/path/to/src" = "$cwd" -o "/path/to/projects" = "$cwd" ]; then
echo "The current working directory is: '${cwd}'"
echo "git must not be run from here; from src and projects only."
echo "Aborting."
else
command git "$@"
fi
}
答え2
特殊な例:使用されている場合は、zsh
領域ハイライトを使用して単語を太字の赤色で表示できますgit
(使用したい単語が$PWD
目的の場所にない場合)。良い:
self-insert() {
zle .$WIDGET
if [[ $BUFFER = git(| *) && $PWD != */src && $PWD != */projects ]]; then
region_highlight=("0 3 fg=red,bold,standout")
else
region_highlight=()
fi
}
zle -N self-insert
これにより、邪魔にならず、潜在的な問題について知ることができます。
git
線のどこにでも表示するには:
self-insert() {
zle .$WIDGET
if [[ $BUFFER =~ '\<git\>' && $PWD != */src && $PWD != */projects ]]; then
region_highlight=("$((MBEGIN-1)) $MEND fg=red,bold,standout")
else
region_highlight=()
fi
}
zle -N self-insert
例: