非対話型でインポートする必要がある .bashrc ファイルがあります。問題は、ファイルに次の戻りステートメントがあり、コードを介した購入を防ぐことです。
[ -z "$PS1" ] && return
リモートの.bashrcファイルを変更せずにこの問題を解決するために、cat
この行を変更しましgrep
たsource
。
user@host -t "
source <( echo \"\$(cat /home/release/.bashrc | grep -v \"return\")\" );
alias v;
v"
PS:ソースがありますか?.bash_config ファイルソースが全くないようですね。
私が奇妙に思うのは、次のようにエイリアスを宣言すると次のようになることです。
alias v='cat somefile'
次に、前のように次の2つのコマンドを実行します。
alias v;
v;
私は次のようになります出力それぞれ:
alias v='cat somefile'
bash: v: command not found
私の質問は、エイリアスが定義されていることがわかりますが、なぜコマンドを認識しないのですか?
答え1
bash
マニュアルページから
シェルが非対話型の場合、Shoptを使用してExpand_aliasesシェルオプションを設定しない限り、エイリアスは拡張されません。
ご存知のように、シェルスクリプトを実行すると、スクリプトを実行して出力を現在のシェルに返す別のサブシェルが生成されます。したがって、スクリプトは非対話型シェルで実行されます。
推奨されませんが、次のコマンドを使用してこの動作を変更できます。
shopt -s expand_aliases
alias v='cat somefile'
v
動作していることを確認する必要があります。それを使用してはならないというアドバイスは、怠惰で仕事を当然と思い、自分がしたことを忘れている人から来ています。青い環境に進み、システム制御を新しいシステム管理者に渡す必要がある場合は、神の助けが必要です。たぶん、その哀れな人はあなたが何をしたのか分からず、足に銃を撃つかもしれません。私のアドバイスは、広範囲にカスタマイズされた環境ではなく、シンプルでよく知られ、受け入れられる運営原則に固執することです。