linux 如何在gitlab管道中设置sh脚本的路径?

nwnhqdif  于 2023-02-03  发布在  Linux
关注(0)|答案(1)|浏览(95)

我有一个bash脚本plan.sh,它在管道执行期间执行多次。

plan:
  before_script:
   - chmod +x ${CI_PROJECT_DIR}/gitlab/deploy/plan/plan.sh     
  script:    
    - cd ${FOLDER1}
    - ${CI_PROJECT_DIR}/gitlab/deploy/plan/plan.sh
    
    - cd ${FOLDER2}    
    - ${CI_PROJECT_DIR}/gitlab/deploy/plan/plan.sh

    - cd ${FOLDER3}
    - ${CI_PROJECT_DIR}/gitlab/deploy/plan/plan.sh

我想只使用文件名而不是完整路径来执行脚本。所以我设置了PATH环境变量。

plan:
  before_script:
   - export PATH=${CI_PROJECT_DIR}/gitlab/deploy/plan:$PATH
   - chmod +x plan.sh     
  script:    
    - cd ${FOLDER1}
    - plan.sh
    
    - cd ${FOLDER2}    
    - plan.sh

    - cd ${FOLDER3}
    - plan.sh

但是,这会引发错误
$chmod + x网址plan.sh
chmod:无法访问"plan.sh":无此文件或目录

gxwragnw

gxwragnw1#

PATH用于在仅按名称执行二进制文件时查找它们的位置。
PATH * 不 * 用于解析传递给另一个二进制文件的任意文件参数。对于chmod,这意味着您仍然必须首先提供正确目录的完整路径(相对或绝对)或cd
下面是另一个不起作用的例子:

PATH=/bin
cd /

ls bin/ls       # works
ls /bin/ls      # works
bin/ls bin/ls   # works
bin/ls /bin/ls  # works
/bin/ls /bin/ls # works

/bin/ls ls      # error
bin/ls ls       # error
ls ls           # error

相关问题