GNU/Linux >> Znalost Linux >  >> Linux

Jak zajistit, aby příkaz alias fungoval ve skriptu bash nebo souboru bashrc

nastavit alias ‘ pro jakýkoli příkaz a příkaz alias bude v interaktivním prostředí fungovat dobře, zatímco alias uvnitř skriptu nefunguje.

1. Interaktivní shell

# alias ls1='ls -lrt'
# ls1
total 0
-rw-r--r-- 1 root root 0 Oct 12 12:14 file1
-rw-r--r-- 1 root root 0 Oct 12 12:14 file2

2. Uvnitř skriptu

# cat script.sh
#!/bin/bash
# Script to check the alias output
alias ls1='ls -lrt'
ls1
# chmod +x script.sh
# ./script.sh 
./script.sh: line 3: ls1: command not found

Aliasy se nerozbalí, když shell není interaktivní, s výjimkou expand_aliases shell se nastavuje pomocí shopt . Lze jej otestovat přidáním příkazu „alias“ do jednoduchého bash skriptu a spuštění skriptu nevydá příkaz alias, zatímco v interaktivním prostředí poskytne dostupný seznam aliasů, jak je ukázáno ve výše uvedeném příkladu.

Z manuálové stránky Bash:

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).

Zajištění funkčnosti aliasu ve skriptu bash

Následující přístup lze použít k tomu, aby příkaz alias fungoval ve skriptech bash. Proměnné lze použít ve skriptu bash k nastavení preferovaných možností pro jakýkoli příkaz a na tyto proměnné lze odkazovat v pozdější části skriptu, aby stačily aliasy ve skriptech.

Přidejte příkaz „shopt -s expand_aliases“ na začátek skriptu, aby se aliasy rozbalily a aby příkaz alias fungoval ve skriptu bash.

# cat script.sh
#!/bin/bash
# Script to check the alias output
shopt -s expand_aliases
alias ls1='ls -lrt'
ls1
# chmod +x script.sh
# ./script.sh
total 0
-rw-r--r-- 1 root root 0 Oct 12 12:14 file1
-rw-r--r-- 1 root root 0 Oct 12 12:14 file2


Linux
  1. Účel .bashrc a jak to funguje?

  2. Jak získat dokončování bash pro aliasy příkazů?

  3. Jak zakázat alias v Bash pro jeden příkaz?

  1. Jak poznám název souboru skriptu ve skriptu Bash?

  2. Jak udělat soubor řídký?

  3. Jak zahrnout soubor do skriptu bash shell

  1. Jak ladit Bash skript?

  2. Ve skriptu Bash Jak funguje příkaz Continue s vestavěnými smyčkami?

  3. Příkaz Rm ve skriptu Bash nefunguje s proměnnou?