プロンプト文字列チェックを削除した後、sshから.bashrcを取得します。

プロンプト文字列チェックを削除した後、sshから.bashrcを取得します。

非対話型でインポートする必要がある .bashrc ファイルがあります。問題は、ファイルに次の戻りステートメントがあり、コードを介した購入を防ぐことです。

[ -z "$PS1" ] && return 

リモートの.bashrcファイルを変更せずにこの問題を解決するために、catこの行を変更しましgrepsource

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

動作していることを確認する必要があります。それを使用してはならないというアドバイスは、怠惰で仕事を当然と思い、自分がしたことを忘れている人から来ています。青い環境に進み、システム制御を新しいシステム管理者に渡す必要がある場合は、神の助けが必要です。たぶん、その哀れな人はあなたが何をしたのか分からず、足に銃を撃つかもしれません。私のアドバイスは、広範囲にカスタマイズされた環境ではなく、シンプルでよく知られ、受け入れられる運営原則に固執することです。

おすすめ記事